{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "U2m4XFaF3sB7"
   },
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import math\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ArkUnUPfp5Dn"
   },
   "source": [
    "# 9.4 锚框"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "7u27pbzh33i8"
   },
   "source": [
    "目标检测算法通常会在输入图像中采样大量的区域，然后判断这些区域中是否包含我们感兴趣的目标，并调整区域边缘从而更准确地预测目标的真实边界框（ground-truth bounding box）。不同的模型使用的区域采样方法可能不同。这里我们介绍其中的一种方法：它以每个像素为中心生成多个大小和宽高比（aspect ratio）不同的边界框。这些边界框被称为锚框（anchor box）。我们将在“单发多框检测（SSD）”一节基于锚框实践目标检测。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "KDn__5ZR4LeD"
   },
   "source": [
    "## 9.4.1. 生成多个锚框"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "BI4-Arak4PH5"
   },
   "source": [
    "假设输入图像高为 h ，宽为 w 。我们分别以图像的每个像素为中心生成不同形状的锚框。设大小为 s∈(0,1] 且宽高比为 r>0 ，那么锚框的宽和高将分别为 wsr√ 和 hs/r√ 。当中心位置给定时，已知宽和高的锚框是确定的。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "UcnFWmsi4rrA"
   },
   "source": [
    "下面我们分别设定好一组大小 s1,…,sn 和一组宽高比 r1,…,rm 。如果以每个像素为中心时使用所有的大小与宽高比的组合，输入图像将一共得到 whnm 个锚框。虽然这些锚框可能覆盖了所有的真实边界框，但计算复杂度容易过高。因此，我们通常只对包含 s1 或 r1 的大小与宽高比的组合感兴趣，即"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "rpTWzAgx5ObG"
   },
   "source": [
    "(s1,r1),(s1,r2),…,(s1,rm),(s2,r1),(s3,r1),…,(sn,r1)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "YGQuji0A5O69"
   },
   "source": [
    "也就是说，以相同像素为中心的锚框的数量为 n+m−1 。对于整个输入图像，我们将一共生成 wh(n+m−1) 个锚框。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "yq-Vyi3o5Qnd"
   },
   "source": [
    "以上生成锚框的方法已实现在MultiBoxPrior函数中。指定输入、一组大小和一组宽高比，该函数将返回输入的所有锚框。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 50
    },
    "colab_type": "code",
    "id": "YlzKzUCf4JG8",
    "outputId": "38a8c46d-d0fe-41d0-e1a7-42099c779934"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "252 322\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "TensorShape([1, 405720, 4])"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "img_raw = tf.io.read_file('catdog.jpg')\n",
    "img = tf.image.decode_jpeg(img_raw).numpy()\n",
    "h, w = img.shape[0:2]\n",
    "print(h, w)\n",
    "\n",
    "def MultiBoxPrior(feature_map, sizes=[0.75, 0.5, 0.25], ratios=[1, 2, 0.5]):\n",
    "    \"\"\"\n",
    "    # 按照「9.4.1. 生成多个锚框」所讲的实现, anchor表示成(xmin, ymin, xmax, ymax).\n",
    "    https://zh.d2l.ai/chapter_computer-vision/anchor.html\n",
    "    Args:\n",
    "        feature_map: torch tensor, Shape: [N, C, H, W].\n",
    "        sizes: List of sizes (0~1) of generated MultiBoxPriores. \n",
    "        ratios: List of aspect ratios (non-negative) of generated MultiBoxPriores. \n",
    "    Returns:\n",
    "        anchors of shape (1, num_anchors, 4). 由于batch里每个都一样, 所以第一维为1\n",
    "    \"\"\"\n",
    "    pairs = [] # pair of (size, sqrt(ratio))\n",
    "    for r in ratios:\n",
    "        pairs.append([sizes[0], np.sqrt(r)])\n",
    "    for s in sizes[1:]:\n",
    "        pairs.append([s, np.sqrt(ratios[0])])\n",
    "    \n",
    "    pairs = np.array(pairs)\n",
    "\n",
    "    ss1 = pairs[:, 0] * pairs[:, 1] # size * sqrt(ration)\n",
    "    ss2 = pairs[:, 0] / pairs[:, 1] # size / sqrt(retion)\n",
    "\n",
    "    base_anchors = tf.stack([-ss1, -ss2, ss1, ss2], axis=1) / 2\n",
    "\n",
    "    h, w = feature_map.shape[-2:]\n",
    "    shifts_x = tf.divide(tf.range(0, w), w)\n",
    "    shifts_y = tf.divide(tf.range(0, h), h)\n",
    "    shift_x, shift_y = tf.meshgrid(shifts_x, shifts_y)\n",
    "    shift_x = tf.reshape(shift_x, (-1,))\n",
    "    shift_y = tf.reshape(shift_y, (-1,))\n",
    "    shifts = tf.stack((shift_x, shift_y, shift_x, shift_y), axis=1)\n",
    "\n",
    "    anchors = tf.add(tf.reshape(shifts, (-1,1,4)), tf.reshape(base_anchors, (1,-1,4)))\n",
    "    return tf.cast(tf.reshape(anchors, (1,-1,4)), tf.float32)\n",
    "\n",
    "x = tf.zeros((1,3,h,w))\n",
    "y = MultiBoxPrior(x)\n",
    "y.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "g4AicGXJNvEG"
   },
   "source": [
    "我们看到，返回锚框变量y的形状为（1，锚框个数，4）。将锚框变量y的形状变为（图像高，图像宽，以相同像素为中心的锚框个数，4）后，我们就可以通过指定像素位置来获取所有以该像素为中心的锚框了。下面的例子里我们访问以（250，250）为中心的第一个锚框。它有4个元素，分别是锚框左上角的xx和yy轴坐标和右下角的xx和yy轴坐标，其中xx和yy轴的坐标值分别已除以图像的宽和高，因此值域均为0和1之间。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "FLnTSyeNMdtr",
    "outputId": "a05d0a68-592c-4e6a-9593-5f53106ed978"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(4,), dtype=float32, numpy=array([0.40139753, 0.61706346, 1.1513975 , 1.3670635 ], dtype=float32)>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "boxes = tf.reshape(y, (h,w,5,4))\n",
    "boxes[250,250,0,:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Ef1PYSbxQoxD"
   },
   "source": [
    "可以验证一下以上输出对不对：size和ratio分别为0.75和1, 则(归一化后的)宽高均为0.75, 所以输出是正确的（0.75 = 0.75378788 - 0.00378788 = 1.04885445 - 0.29885445）。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "EjkwkT-gVDq0"
   },
   "source": [
    "为了描绘图像中以某个像素为中心的所有锚框，我们先定义show_bboxes函数以便在图像上画出多个边界框。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "cC-0lM28XuEV"
   },
   "outputs": [],
   "source": [
    "def bbox_to_rect(bbox, color):\n",
    "    # 将边界框(左上x, 左上y, 右下x, 右下y)格式转换成matplotlib格式：\n",
    "    # ((左上x, 左上y), 宽, 高)\n",
    "    return plt.Rectangle(\n",
    "        xy=(bbox[0], bbox[1]), width=bbox[2]-bbox[0], height=bbox[3]-bbox[1],\n",
    "        fill=False, edgecolor=color, linewidth=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "xRh3fBWzOVYn"
   },
   "outputs": [],
   "source": [
    "# 本函数已保存在d2lzh_pytorch包中方便以后使用\n",
    "def show_bboxes(axes, bboxes, labels=None, colors=None):\n",
    "    def _make_list(obj, default_values=None):\n",
    "        if obj is None:\n",
    "            obj = default_values\n",
    "        elif not isinstance(obj, (list, tuple)):\n",
    "            obj = [obj]\n",
    "        return obj\n",
    "    \n",
    "    labels = _make_list(labels)\n",
    "    colors = _make_list(colors, ['b', 'g', 'r', 'm', 'c'])\n",
    "    for i, bbox in enumerate(bboxes):\n",
    "        color = colors[i % len(colors)]\n",
    "        rect = bbox_to_rect(bbox.numpy(), color)\n",
    "        axes.add_patch(rect)\n",
    "        if labels and len(labels) > i:\n",
    "            text_color = 'k' if color == 'w' else 'w'\n",
    "            axes.text(rect.xy[0], rect.xy[1], labels[i],\n",
    "                va='center', ha='center', fontsize=6,\n",
    "                color=text_color, bbox=dict(facecolor=color, lw=0))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ATnfS0JCZX2j"
   },
   "source": [
    "刚刚我们看到，变量boxes中xx和yy轴的坐标值分别已除以图像的宽和高。在绘图时，我们需要恢复锚框的原始坐标值，并因此定义了变量bbox_scale。现在，我们可以画出图像中以(250, 250)为中心的所有锚框了。可以看到，大小为0.75且宽高比为1的锚框较好地覆盖了图像中的狗。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 278
    },
    "colab_type": "code",
    "id": "-Xi3AXNZZXaB",
    "outputId": "0dbb34ae-f28f-4cb2-d927-3e38cfb37305"
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n",
       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n",
       "<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n",
       "<svg height=\"170.507701pt\" version=\"1.1\" viewBox=\"0 0 214.1375 170.507701\" width=\"214.1375pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n",
       " <defs>\r\n",
       "  <style type=\"text/css\">\r\n",
       "*{stroke-linecap:butt;stroke-linejoin:round;}\r\n",
       "  </style>\r\n",
       " </defs>\r\n",
       " <g id=\"figure_1\">\r\n",
       "  <g id=\"patch_1\">\r\n",
       "   <path d=\"M 0 170.507701 \r\n",
       "L 214.1375 170.507701 \r\n",
       "L 214.1375 0 \r\n",
       "L 0 0 \r\n",
       "z\r\n",
       "\" style=\"fill:none;\"/>\r\n",
       "  </g>\r\n",
       "  <g id=\"axes_1\">\r\n",
       "   <g id=\"patch_2\">\r\n",
       "    <path d=\"M 33.2875 146.629576 \r\n",
       "L 206.9375 146.629576 \r\n",
       "L 206.9375 10.729576 \r\n",
       "L 33.2875 10.729576 \r\n",
       "z\r\n",
       "\" style=\"fill:#ffffff;\"/>\r\n",
       "   </g>\r\n",
       "   <g clip-path=\"url(#p0807f8224a)\">\r\n",
       "    <image height=\"136\" id=\"imagee653996aba\" transform=\"scale(1 -1)translate(0 -136)\" width=\"174\" x=\"33.2875\" xlink:href=\"data:image/png;base64,\r\n",
       "iVBORw0KGgoAAAANSUhEUgAAAK4AAACICAYAAAB++dDFAAAABHNCSVQICAgIfAhkiAAAIABJREFUeJzsvXmsZPl13/f53X2pverV25fee7pnX7iJImnSMi1ZFgLFQiQn8gZYsWUYsaEIpuEEsWAkkZkgkSNIkBTFsGjtEmRLlkXZlElK3MmZIWfjdE/v/fZX9Wq/+/LLH7de9ZvhkNbMNMkZqw9Q+N3aTt2693vP7/zO+Z5zhZSSe3JP3mqifLt34J7ck9cj94B7T96Scg+49+QtKfeAe0/eknJXgCuEuC6EMIQQF9+gno3p+H9Mxw9Px48KId7xOvQJIcRPvULnh96gzrnp+CkhxG8JIX5QCPFz09d+Tgjxg69V5/S775uOvzUdf1QI8fem27/5OvSVhRCuEOKzx4+nEOIvTY/LF1+Hzk9Nx3/6dXS+5uM51fHr0/GVOr/+OZJSvuEH8IvT8affoJ6N6TiYjv3p+O7p+Njr0FkCvv9I57HXX7fO6fc+AVydbq9Ox5Xp2HyNun4WeB8wd0znc8AL0+1rr2P/loA28Mzx4wn8++n2f3qt/x1Ip+O/eDWdb+AcGcD8K3V+o3N0t10FcZf1vWH9UsoJ8FN3U6cQ4ivAN7JYr1Vnezoej02KVzx/rfIZ4KPAz7zi9Vf+xmuRp4UQXwbcu6gTKWUM/MBr0vlGLOSxK+YaxVVz4Q3qeXQ6fng6/vPp+FHgHa9D3+J0fOmYzg+9QZ1iOn4B+E3gB4Gfm772c8APvs7//qvT8Ten498FfnS6/RuvQ9/NY9uz4wl8zxQIX3gdOn/pmIV8NZ2v+Xge0733Kjq/7jk6Ogn35J68peTPXFRBCPEjbwWd9+Qby5854ALfDJDdA+63WO6aqyCEePKuKPrmSwvovgV03pOXy7qUcu7oiXa3tEopH7tbur4Fsv4W0XlPpvL444+/7PmfRVfhnvwXIPeAe0/eknIPuPfkLSn3gHtP3pJyD7j35C0p94B7T96SctfCYW8myfMcgOwYNUMRL79G1Vf5PIDyirB2flyHonzN51/53j351sh/kcA9kuNQknn2sveyYwAV4k9HaMqy7DV9/p588+QtBdzjlu5oWwhBlmUIIQjDECEESZIQxzGR55PnOaZpYlkWhmGQpimapoGmzqykqqp3wPgKi5u9CkaPW9ej773Mat+zvt90+RrgCiFOAv+Ggl73vwoh/hOAlPIDQoifAd4D/E0p5bc2xZvliCOwZh6KapDnOZPMRRMj+ru7/MnHPsWnP/8JXnjpJmEo6Q3GtKyYs6dW2DyYoIucRCpsjiQXNpb5/u/7S7zt0Yc5f/9F/DglV3NUFBTlzkPkcgbKI0DK7M72EXAzoX2NK3EPwN88+bpcBSHEPwUmwK8ASCl3hRA/JKX8NSHEZSnluVd85a7zI4+mZgCR5TNAxBKQGTJPSaOUvf1bfOh//HGuvniDCw+cZrc7QhEW494+rWaFD7zjHNcu3+CRi2cIwogvvniLw8EYxSyxtXfAe975BP/kf/nHKLqBaZZnFvhofCVI4RsD95WfOS6qqn7Na/fkPy+PP/44Tz755OwEvKpJEEI8DexIKf9PKeWulHJ3+tbmdNw69tkfudsEmzzPybJsNiZJQpqmSCnJsgyZReAfkg/32Ln2JB/6Bz/OpZeuct9iiYbi8Zff8wjvffgUZS1jp9Pnvo1FBDkLdZs5V+Wvf9/7EYbGP/+JH+dMSyOeDEmCDiKLZm5GmqakaUqe56RpSpZlf+rHEdk5z/PZ40iO/tfXe9yt4/en0fmN9uNu79Pdlq/n4/4FKWUX7hQXSil/EvgnQoifoKjjYvr6LwC/wOuxuDKiuHYEIMhRi1VTGpMKgchiBBJNZgSxREkTwsBjMhqw8/zvcPmFyzz6tu/m/hNtojBlztnjr3zX+zCrDXrjkO3OHItehWarTTQJ6ftdak2XjZU687UqIvL5Gx+4n0+9cJmwN0Taq1QA8hwB5FkGioKqqkggfxVrecctyJBT6yuPXIrpZxRFmb0HII5cCtVieowRSTG7SJEXVlyR5GmIIhSyTJKiYloGaQ6okKcJmiIQUuNIdTqbPV/umOeZfNlsoU6xqEztVq58Y3C+Gf33rwfcTwghIinl48AHpq/9JHCFAqR/4678utCnGwpZlpFKEJmEXJLKDCXPQObkaUw4DoiDIeFkwrCzzbCziZoFWI7AdQWmHtNuVsizEJWI9lyZ73r32/jZn/8dqs73YJomeS6LhZptcGKjhWUmXHzoPJWVNbzJCEuIozKS2Xj8pB0H4nE35uhzMx/4Fe7X8feOvy/zdHocBFKdbZLnGSIDgVZYaCQKOVEYIoRKEmWoCoR5iqkaRSmLEAhN/Zp9nh3qY7//ynf/c8zW46B/pe5vF5DvZunOa1YUU8RT8yQhTSLyPEcjJxgPCPwJWTAmiUJGwwGHmzeZDHsM+x3U/g6LbQ+zXKdy8iKel5JKky9//GM89sAGpXYVP8kYHPicffCdpKMRH/30C/Q6mzz++AM4ZsaZ8+fo791EyRNcp4G19hhR7Ry2UlzLRyfrZYCbWtxX83tfGWk4/vyV28cjEXd85HTmFvV6Pcb7ff7wjz7O85evk8QhwaRHs1JFkLK/38GLc97z/u/i5Mo8Dz30ELZt01qYp1wuI4TAMAzCMMQ0TTzPw3Ec8jxHVVVicjRNI02LC0dTzGJWuFP/9TJ5NXD+aUKCdxPUr/Rxv23hMCklmpT4/X2CQYe9W1cIgjH+eIA/HhAPety68lWEEEyGfQzToWTq1KtlKmpOmoYYioA4oawJrl15kfW5Da48c4VH3n0/qpQstecwHbh5Y8Lm1k1ECnEomGtpmMEAyx9xqxewtpDQvX2NWmkNFRO4c9CPH/x8amWPg+/VPgcvX4S9EtRH4BB5QpIk+L5P99Y1bt26xeHhIZPJhJaZIYYjWlbGF65t4yoJFUPw0NkTPHHfOb701ev8ySf+hP0T8/zKR/4VcRxjujYrKyvUajXq9TpXrlwhiiJGoxGTyYTRaMSZM2doN1o8/PDDrK+v88gjj2A159E0DV3XXxW4f1owfyut77ccuJIUmYRkgcdgEnBw/VlGe1cZ775EFsX4wzGR5zMcByy36xiGTuvBM+zt3qKzMyD1dMxmRsmqIgCVgHB/TEV32MsU0DSkzFCFTpj5bF+/yaUXr3D1xm3e8dDj9Lp9zpxY5vbOTUqaJPQStoY+NSdCH0dMtOxlwNTFnalRVQpQ50KQqy8HrlT1maWVUqJk+cvALYQoLF6aILNi4RYFId39Hb7w6U+ys7PD7ctfwXY0fvjv/CibLz3HwnybTvc2rpnz57/j7dgabCw0EHaV5VNn+dVf/R2+9y98gOcuNej0Rzz5uacJKxWeu3YNx3FA0TixUOf0whqqVeY/fPSP2VhYRNMlu1vXeObpz/HFz30Szw/5Kz/4V5lbXKFWb6Bp2p1woBAz/1xRjNmxyI4uvmOzy/HY+vHnx4/T3ZJvg8WVhKMDvIPrRN0dkoNtKmpC+8QCKC7dvX1szSCI+himgpQZcexz34UN5poH7G3vUKm2EEqMVHJURSHWBeE4RpJRbzoIoZJnsLy+zouXt4jCjDxXGIz2UZUSB3slalWLWqtCcuMGi2tnEOocvU4PaSovn85NMbOeNsWJ0zSNXHk5cHOlsFbHY8Dy2Mk9ikykoUc6GuENB3S2r/C5p57h4599isdPV/m+D76DufYCSMmpcxept1Z45O2S5h/9R0xN4dSJNeq1KqkUqIbLD/y3/zWXvvo8a2trVBoB0cCj1WqxtrTAU089Rb3ZomQbnD9ziq2DA975tkeolQ1OnTqB7/s8+uBFOp0OaS6J/QkyCfF9H9u2Z26FpmnHLsBj7sHUnz7+P4/keGLnmyXfeoub5SSTA8LDy/Q3b1Ot1cl1F2EamEKlmjQwFBU1VtB1hVymKKFP7MeUSiVOnFxFBB6WrYOjk/ghzY0VNMsjk/sQpCiKgm24fPnpZzlz7jG2d0L6vQlnvnsFmcX4XsbZiye4ff0SrfklpObw4jM3OBheRysXU6aiKBiGQblsz54repF9U1UVqSovi/dKVZ8BFoqTdtzKpGlKHMeEkxHB3ibJpM/ejWe50NZxHmryF7/7naRRQqtp00Uw8mLG0RalWgODlO9453eSpimVWoNcKriNCucfvUjmjWkuVHlkZZ3vfd/7+chHPsLK+gof/9gfcuG+c1x6/hkeuXiOdzzxAP/vz/8yjz/652nVKxjzLW7duoVrmWycPI2i5ORxOAv/AbMs5BEA86PFJJBl6ex1ZRp5mZ3j6QWcZdk3LSnzLQeuoioQJ7i6RdJeQFFVNEVBUFglxzVJggmVUnkWE02QxNkEVQgURUMr10ilJBpG2JUxWlhibrXN8lqZw4MqapxRcU0efuQi2zdfomV0+NBf+04W1xykWqJUXWDrxiVujUN+8V//NqNBhJ9INKeElRe/GccxcRzTnmvgui6WZbHablGpVDBNE+EIDNXAUC1UVIRdAF5VVRSrgq7rsynXVLU77gIKpAnB6DrzZgp6ynvffR/e3gF2u4VPRJQGpKbJ+uIJDra7fP8P/BD+uM9kMsE1FNz6POOxz9//W/+Av/rXf4gTpy+i6zrZeJ/+wKNcSbjv/nP8ucfO01128YMJwV5GRVP4rV//XWTq8SP//Q9jKB626vDhD/8//PT//b8xTiOUXJLHSXFB5gUASbPiIuWOGyBUZba4VNScXB7z9aX2sgv3CMR30wJ/G1wFgdBNpCisla4XIbEkSYoFm6qSHP/0dIWcCIEiinjo0fSUZRlCSrIkhThE6BlZHFGyXeI4ZBSMWV2dQxcxSZTgumAYGoHfwSlX+Gf/6FdI9BXKhs9cs4VVKiGmJ20wGBAGPlkU0vc9sizj8KBDtVplcXGRUkVF12w0TSfPFHRVwzCMYt/MIbquz/gRpqZjGAaapiEVAZMhSRhgqyoZBc8iVcCqlEmlhhAurmkxHoy59NUXOXHuJJ1Oh8XFRXZ3d1nQXc6cOcfy8jL1eh1d13Ech4OBzouXrjNXa6CnCb4/YWN9HYwSP/2vfpELK2cYhynzc4sYusr9Fy6ydbtP72Cf8WCILDWQaYKUORIQuQoztyefhtunLtQ0iKQoCpJpDHoalVCE+rIkzDeDlPRtWJxpVDYeYO/g6sv8wTAspqkkidCnV6aqFgfgyHL53hjHMkjThCzLMAyDLAXvsEPW6+OrOaoiyHINzdCx0pjuwXVif8RCq84kmRCkBj/3C/+Gp680WN54F/rcgJZcwDZ0dF0lS3IGgwFe5nNisYGpQblcR9M0upOcJEnY2tpiOOgS55IkF2iuQ1l1Z8BV9HxmcXRdx9KNmfWJRx0+8OgJ2k2NbBLTaDUol0uU5paQhkW52iQcmJTsMsFkzPJClb29vVlY6/r166yfucgv//Iv8973vhfbLlyZJEnY3tvj1IkNvvqVL/Do/atYKjzz1BdQnSp//6/9bf7tH/w+TzxyDnLo7G7jWio3r97ggdOrdPd3sHWXZNibuUZH49F/UYQ+s5opchafPnKXFEVB0zQymSM1rTh3lkmSJOi6/qqhw9cr33Lg5kCKjVGqoEqfKIrQNI1SqYTv+0iZIdMI3/cBCmubJLODNB6PUQWEYYjjOCipRhoFlF0LfzLBdG0mMkHVNRRUSmYZjJzoMOH3Pv8SH/v8Jcb2w6w9GLPgpDSVd5CW9hGpj6XCcBSguAaNMxt4nsdcozZLAS9XVbKsmB3suQVGcco4jTmc+GxNfNK08Pv0Y9Okruvo3ElYfPCBNnoy5nA3II0ywixEs1doljcw9BxDRLitgEGu0+1cBkIajbfx/DM3WFtbY2Njg6tXr5JlGWfOnGFuqUUURWRZRlNs85e/60Ge+grcPNzC1AS1kkt7bZ2nP/0k+509PvDux8gSgWmnbN28wZmT63zw/e+j7/t0uj0sc1zs8/Rx3GfP0gKgSZIw9Mbs7+8zGo3Y3TkgDEOklLiuS6PeRlVV1tbWaK+vsLCwgKZp1Go1DMN4FVS8dvnW+7gUHdOS8jojr4tqQJpGWIpKlsXIPCKJPNI0RyNDopF6Q9LIQyYpag6Hg0NqtRq9Xo9KpYLruoyCCEUK+t0BlUqFJI+I/B6JorIfaPzL332KzaTG/Il38EjNojnfnB7EBCVxMRSXOPIgjhFxRr/fx9Q0HEPFVA0sq8LBaEieaZiGg/THWKpKKVYoJSo9IQhSgyBNiOKMOI5nMVtdVbDVnMW5FhUdNBLiNGP/YAfTWiHzxviHVxnEMYZh8OyzzzK/tkFFk9SXTxP2XuA973yErb1DGu0N0ixicXkNw3SJ8hQ19vj4v/t1VhuSzNeoGDYLZx+gpKv0+322traIhM8T5+/j9qUrmBWHE6dOUl1qIVVJP56w2x2xc3ATy3HQdX1GBUVTZtTROCpmHIDu5JCbL1xhf+SRZoLY92g2Kpx69CH++OO/y8MPPcYv/f6/ZX6xxne+7wO0l5ZZXTvJwvoSTrlGhsYb8Xi/bQkI27aJVZ0sy0mihDiKEXkMWQJphKmqpGFAlOTILELkMaE3gVzSLFdJo4TluXn29vaIJz6u65KlMSLL8YYjfN/HIOL2/piPvdBjbK7w0Nl18iSkXNUwdYmu5YzHY2wUFE0gsgRDzSnZGmmks7CwMAWfIEkCSqaKkAZSqmSJTxCn2Jogs3TiPMVQQM0VSo5AUXTiOMZ1Daq2hZLFVC3BfKuKyGLG3Qmri22aVQdv2MdSi56vcZTTKuvUq4JG2WEYdVB2xxxEPVynSqmsEKcppuOim3DtyrNEnX3myxqKEChCx/djdvf3aFYaKIrCqVOneOB+m9if0KqWCM0UodlkmSRI4dd/9d8xt7AImgb9LqqqYhgGlmWhWeYsMXHkKsRxzKhziIxTbEXD8yfUHANT5vR3tllvz3NquY35tguUajVsQyX1J6gUEZ8sz5DKG4Petw24qqpClhP7AUouCQMfwwY/8qm6Np1eD1tVCDyPLI2YjPooSU4cRcRBYc0GaYauqIhcMuz1EXmCohSrXcMwuHV7RGbPM7QbXGw4NMuSTDFRSiVElJJmGUvtNvFkhJLGoCqUqxU8TSWPI0RWhH9sy0KVObptEYUZUgpKThEWC5Mpc8zSCROBoZlIJZnGQMs0Gg28bgfNUHBUSck26G5uo6kmMo2wdB1FTemFfebm5lCB00tn6B9G7Nzco7J0EtXWyUZb5KNNbP86qt1AyyaMd2F0+Us41WUWl9cRacDe/g4lt4bn+3hRjuvafOX5y0hF0qqVObG2SGu5iVua44tf+gqf/uxXqDo2m7e3MEs2Ndciy7IigZFGaKlJbhjF4tJQUYAsDrhx7Tp+Z0huOWz39vjO73gn+9u3wVHpbKbcPuizsLZKq1oGoVByTXZu36S2tIhuv7K97muXbwtwc3JSpYjx6aZBGqZohkoQBjilCsNBF11kBJ6HkKDkKqPeCEvVKTkOk8mkOLhmnUSmJHFCpVSif9Bj4gVkQsEwTDb3Qp4fdTg9X0O1FKSi4lgWSi5w3BqIjCTyaM61UGVGlsboqYfMI3xToT1XQ6oKg76HbprYpoKlqSSxRJEamqKgkCLQsAyJFyXFFKhYWJZVJB0mA8p2cTElWYrvT4hFzMFwyLK0GJb3WNlYp2XbJDmYbglsh+aiRFldJE0y0HTc6gKm4ZKho+kOcZaCGnPfu95BpTTP9laHy89fptMfIslZWV5k6IVMJj00cqpuhflGibmGjV6d4//7yK+RZRK7ZJCp0G4tMhqNEIqGgoLjljEMA8dxsCyrCPU5Ls985QWuXbuBoqpI2yIMPOZKNU4urWLlEq87JE977G1fZ67xAJ/41Gf43u/+HkqWwaUXX+TBd7wLGacopvmG2oB/G4CbAwqqYpAhUDQDoScoeY5rKPjjQVGGE0UIKVGEQhAE1GsNJoMhnYPunWB2Q6Vpw4SMcDJGNw0c3WI/ULmy12EvcSk1miDi2Qk4WgXHWYrtGDimRZiBbahIqUCa02636HT28f0JiYRSqUoYhkVsN8qQuYqqqqiqoFwuo8ZZscg0TKIMyHI0AZquoZgGMg2LoP40Rhz4Y1bm56laKq1WA0lCptjYpQrl5hyR0DCcJoauEvkeSdQHTSVTVUy3RgbEg5BSpcLYz/mjz32SKEp58atXqNfrDMcT0uEIXTcplUqILGFpcQ7d1BgFMRvlMvv7+yiKRntuESFhPBxx8sQJJqN+scDUdUqlEnapALCu62iWxfb2Npqm4Y2GlFyXLApB03juueeoV8vEcczaWnu6eFbwhofs7mzinD5Lo91+6yYgjoCr6Q10q0wcjBGag8ghCiYvy7AICUlchL7G44DQT1haWGZzcxPbthkMJuilBtv9iN4Ebt3OGU88IgwUrYLhCNRojLSqGIZBu92m3+9j2zbzS6tougCRoocx5EOyNCFBUKvVuHQ5x3F1+qOI8XiMoiikeUqW5QiUWXx57HlYlgtxSK1WxY+KOGinU8R8IQNVkMVFrZtm6Ky0alimpFx2MK1iH9Syi3DKJIqDXW4Tqw5+OCYLM3q9mPHBAKnFrJ1dRygZ/cGIF569zFeev8zy8iKGYVCqNnjuq5eKaR6Yb9nEcYRGTuj1UIwma+cvsLu7i2EYuG65AFKYUCo7GCi02+3ZmVIUhTDJkYokI0fJixq+vb09miULx1DpxwGm7fLss8+yOD/H/efPItMAVzN58jOf552Pnqfs6khFcuL8+SLzqGlfQ618rfItB644Wk1aJYS7gulfQicish1kEhGkY0xdQ9hlDnb3IMuJkpw09pAiZGf3GrXFGoNwnpd2Qz79h18iyzJc18U2chRdYbHpEscxlWadRqNBrVajtbhIlmVU68s0m0284ZDIGxJ5E5oNkzieYCoKV268gONUeOiBi8RximrHs0qM0NeJtZh+v0+ruUIcxxiKymg0IklzhDdBV1X6Pky8DMMsfPnRuI/lCEo1k2u3DvhzDy/h97YolRoo0kbmCkK4WHoZmQnyMCbPJkwGPVSZUnEr/PNf+ATb+yOU6Nf54F98PycXW/T2d5FC4yvPvsji4iIHvSGHA49uf8La2hpBEDAeHnJybYW59TXscpXBYMR4ELK0sEwURdSqJcZ5j3LNZjDuMqc2QFfRDQPd0rHKZToDD1UKBts7jMdDDju7PLFxgXESM7cwTzT2MNKE1bk2N65cZ22uglsto5ccmgY0yw6TQZ/18w+TaQ6qZrzhhh5fF7hCiN+XUn7v9LZCt6SUPzC9ldE6xX0Orr/B38ZdvY+Bf4jqZcjRHmkqi3juuEvo+5iaTioTEj/EsMpILDRN49nLPs9f+RKoFiuLDUzTpN/vU6uWaLVaLC0tYds2TsmdpRrDwKfRaDAYDBgNB0TeiDTyEDJF10uM+iFxnnPfAw8DAseuMBkHLNSraJpGv99nOAiKSmIFPH8IFFbJdnQ0q+C0JkmCSkDZUQm9Hs1mE61Sp9/vMkwCSnNNBgE88ODjBMM+cZoghMZwOCROoVKfQ8kyNE2jXC4TeSM+98VnuHrjJn6ioUYhL730EicXW9TrdaK4WEilaUq55DDfbpFlGZcvfZVzJ9dYWlwEYDicUKq12Ly9xdNPPkOlUkEtlyiXyzg65FnBh85inyhIKdWqKOjIPOPk+jL9kY+ztEQURSwtLfHC3ph3PvEY/YNtQlfjvvtPce7cOfb29ji1tE6YJkziENFskFeWWJxfRS0171ra99WqfP934IeAthDiV4B3AU9M3/6/gC9R3Gii9YZ/XTWpnHyEoHMNLfXRpU/gFYAIRhN6ewckUYzMMoajmMNxwtXbm2jWImsrq+QyRddi5ufrVC6sY7mFD1Yva2RZSB4rZGlKEMdopQr+qI+hQOyPcS0NzSihiAIktm0TeR5WqcJ45BEmEGUQdDoEQcDc3BzNZpXRSLCy8gDj8Zg8z7l69SpCyVHjDNM0yQwF13JJGsaMZSVzlaajcu3qDa54Ia36OSr9iLV6GU3XichwGg1KlQZ2qUaYKHiBRzgZkQQT9jo+3f6ETDGpGoL9/X08z6NiaxweHtLv9+l0OjQbVebqZTzP4/zpDWzLYm5ujpJloGs6Mtf44heexlKh6lpUq1UGgwEl/Q63QKYJFcdmMh4gyFDjIvHTqDW4dm2PU6dOsXnrFt3+hE999kvYGqCrBAnc3unQbDY56AxpLy1y4uxpFk6cp9lexHTKGKZ919K/XwNcKeU/FkL8NvATwP8gpUyFEEfFkZvT58O78eNK7iOsKuXVC/QmhxjJDUK/YCQZikqlVCbRI65fvYYXaORGlaX1C5xeq3D98nVajTna62skScLcXJWDXp+zpwvKXhzHLLeX6HQ65FlKvVxCSsn8/DzXrl1D0VxMU0GVAj8I0DSNarvN7mGfPBOMxj1KbgUhM3Rd58qVKywszKPpKpIUoeTMtRqsb7yP8XjMpD9iOBySJAmhHxUcBdMsCNzjQ7Alb3/sAte6EZ/94nOM/BYr770fqSnkaVZUK9gJShQhRbGItG2bcb/LlSu3SLJiQTnfrHDy5Elu3brFEw9fAGBhYYH9/X3293ZYXV1laXEe3/dZXl4liTysWoXLV6/QHwWUy3VaFYNyyUVVBHEUsn5ijW63S7PZIA0iRoGHY+ikYYBEZW9nC0VRmJ+fx1A0dFUlf/ZppJLjKS5qkJGlVrFgVSqUmyaZquBUq+R5zvUrl1hcWqFsaaDX7wZ0vq6r8F4AKWV3eqfE9wF/B/ifhBCfBO5KVW+maKiZBnkJs7HE2BuQjQ9QcpORNyBLctI0o1ypY1SKgLht24zGAadObeC6Lqpu0Kw3CIKAkysrHPYGTLwE1y2RZQlC13DdeYIs4fTp02xubmKWXUZRyDCUGIbBZNij3ajhRQmOZSOlnFlLRTSIzRhVMbF0s+DURiCkYNAbMOgNpnn4hIWFYj9knBOGIZDTqDrUyhamabK9vc1SKaG8MsfOlR5XVz3YImYRAAAgAElEQVQuPNrAdiWmpkAeMupHWE4dxamhGzamO+SPX9hC0cq4io6t2ZiOycNPPMLB/j5BEPDcc89RqVSYn5/HC1I2t6+xurrK4aCIEPzG732UlbVTePE2y+0KZaco70mjkEa1QrfXoVwtE0Q+hmXQrs4xHo+J45gsjpFxzP5L1zj54P2UT6yQJSGXLl0i8APOnVsjGI1Ymq8wGo3odW6jK/MstuchTjFVAeVy4WLp1l2LKnw9Lf/i2PY/BI4uk/r0+T+6Oz+uTvcgw60tozgtNLOCZtiYpRpS19Bdm6WNFebaLYQCSRrjuBampaMbKtvbmyRJhBCSzmEXp1wqKHcKdPoDmvOL1BpNWq0W+/v7L+PaOtP05sLCwizuOplMgILpNBqNCl9WpFRrLm7JBJFiWuosgxQEQWFlw5D9/f1ZSbtt27huEWjXdZ0gCDBNk1atjGuqtJtltvf7pKlGLix0u0QuFFTdQLfs4nuqQLVauNUGrlNG1xSS0OfJJ5/kS1/6Eq7rUi6XabfbSCm5dOUqN25vkiHo9gcMxhP2u4dYbolnnnmGEydOzEr9j0g0pmnium7h0sjiQt7Z2SHPc8rlMmkaoyg5nj/msHtAlsQIcpQsY65Wo7e/z+rqKlevXmVubo6lpSXOnj2LrutEUTTTqSjKjOd7N+RVLa6UMgO+d7r99mOv/zd37ZcBITUQOegqkhZW6yQi6hOFOXErQ7cHCJkhyMg6E6JIYFkGhlXwYw8ODjhz9iS+7xeLMKvEYDKmvbyI47rcvL2LYZcYeSHjbpd2u83Ozg6Li4tYukan00FVVRzHZNA9IE1T6vU6nudRKpWoVquMRiMMo4hrbt6+Ra1WQyj5DPz7+/sFucQyqdfrJEmCN5jMaIxHpBIhROFLl3Oq7jLd7iFGlvG5P/oYDz7xEPrGCWyngmq4KIaNzCEej/n5f/0HeKlE0RUkOedPruOnd6oL2u02h4eHBdfXcDg8PMSLM4JU8tLN66yvr7PfG3Dx4kU+/elPs9yuYK/Y9Pv9O2wtteAgnDhxgizLaLVapGlKGIYYpoJp2IRhyOUXniVTIAtjSo5JHAdUq1UODg5wHIfd3V1s2+b69essra/SUFXG4zGLq+sIRbur9MZvb+8wAUdGXwCVuRN0vD2cMGUsUogj0ihApglCyyhVXeq1OcLQJwwnWJaGTH0gZxKGEMbML61hGGVcq4rpTBgOhzSbTbpJSBimrK2dJMsytrZuUy6X6Xa7CGmQqwJVswmCYBojHuC6LivL84RhSKezj46CrRkMOoeUSiUsy6CTpziGRtmyGQ1GqKrKwuriTE+uSmQq0QwdzdBJPA/d1KjVXUq2gmG1CEKIEhNLuISxxFByKqrJS/sRT169iqPpVCsmea6zduYBtq69SOh7mJbGwuI8n3/qKaTQ2drZRAhBxTJpL8yThBP80Zi1pWVu3b7KqfW1wvJlMe35Brqu4bgGMrOI4xjLtEGkM2srpSRDEgQBYTzEwkTTXXb7BTdkY2ODW7dukVNc2NVqFVVVqbbb+L7P6LCDVapiqCp+nKDb5l2Dzpur6Z0UNBZOM/JG2EEHSiVSTSH0UoRpoqpyNv0cEdCFKGiG8/PzLKys0h9MiPOchJxmszkrRTGm+fYoimbTWKlUmlY0FJUVqqrixzl5Dp4XoGkGm5tFsL5UquFnYyaTycySDgYDyuUiiD+ZTGYuwdHvRVFEo9EAoRKGIeNtn1KtWpTgGHVkPMFPIkjuEM1LrkuUSA76u3zkt/+AqrOE2zZYWlqi1+thWxqrq6uc2lgtei6kaUH11G3Onz8/q9zQNA3XdVleXkZRFEqugWuZrC60SMKIJMkIgghEjq5nJFmElmUYuo3jOPT7farVKr1+j1arxcWLF+kdDBgHCevrq5TL9/OJT3yCxcVF4izF933CyOP8+fNcuvIia+snOByOWTFtTLdMa61V9Gy9S0UQbyrgSkUgrHlEfQFzeAtpWSQyI400hFZ0bMnSO7VQhR86Zm5+mUyoDPwJGBquXcXzAkyzIIx0u102NjZI05ThsAiInDx5ktFoRBiGuFYZmUvSHHTNwfd9dM3B0F1OnTjFl7/8ZRqNQtdkMqHdbjMcDimXy0BRTxWHIa1Wa0ZndByHMAyp1WqMoghDU6i1W4TDIWbJKUjXwiRJU2rzc0RRhOJ5JHmO7Vb5qZ/5Ta4eKOhaxv1nLxQRil6XG5dfJM9zluZb+OMI2zBRVZVKpcLW1hb1ep3xeMxgMGC+UZDQ4zjmwn2n8YYDDg4OcM0K3e4uzWaDm71tAj+lVqvh+/s0WyUajSI2PhqNaLVaJElCp9PBtW2kpiCFiu/7PPHEE/T7fbxozCOPPkCaply9eolHL5zDbS6xcvoiTqNJubUAiopEuWt3KX9TARdyEqFQnjtNtvM0ocjQdDBNDT/TicYTep0urlXBrVXww4CFlVMESU4QZ5xqrdAfjDg8PGR1dZ1hfwB5hmXoZFKSUyScq/U6SeQRJimaaTEJYqIoKiou0ohMSPYOO8QyYzIaYxounYM+lpFhmBq6oRLFOblMcaZsKsuu4MUea6fW2NnawptyLmQWk2kWrutSKZWpOSXiOEZVVeyai6IoWJZF7rQpqQlSEfzS7/1HpLPEE+9Y4UP/8z/jo7/9ET7zmc9QKpUYDAZ8x3e+D8eShH7EXrfLwkKbKIpwDZWtWzcxrDKJhMP+GIBKpcKzL2yRhh6nNla5HdwsFpWaxd7eIVGq4r10m9Mn15nsjLl07YA4jjl79ixs7WAYBtVqlcO+h+u69A8PcSt1dne3qdfrXLh4mn6/T+D7vOvtb2McJtjlEqYBpVJpVu5zN+XN0QjqmAgJqqbMqksVRZlNfUccUdM0CYKASqWC4zhFFkhVmUwms5Vrr9dDNy2cUhnNMInjeLagOt7QzjCMWbM6RVFwHKcgpkytZhzHM4JNtVql1WrNyomOpmUo+MVBEBSVs+UytUaDVrtNDrMIRBiGDMYjdMtk7HvkQmcSJEilWHXHqWA8TvnkJ58kiGI++MEPsr+/i+u6+L7PYDBAURT2totVv5DgeR6+7xfVIAgc0yqiLobB4jRrJoSYLUSjqMj+ZVmGZVl0Oh1KpRK5zCiVHAzDKJIqQhDHMTu7h2S5Rn/go6oqw+GwKBYVgnPnztFsNnnxq5cxdAvXKRP4URGW8zwmkyn35JvQOO9NZXFzFFQZkR5uzUAmVNBaLQ4Pe7PaM5iWkmQZ4/EYqRYnyYuKCgIzK4owhWZiWhZxxsyvNQyDXq+HpuSzk9NqtTg4OKBSqTDqdymXy2xsbKCqKoe7W5imWRBu+n0WFxfZ3Nyk0ShitvV6HcuyGA6LaoxyuUxCESnJVYFbq2BZFZKkKMI0bQtV16m3mujlBtV5B8dxCALB3/2xD1Our7Kx/l4+/LM/SZYmXLtymc9+9rOsrKxw+/ZtoigiDsdYYg6nZHLx7Ena9XLBTsszrJPr7B706Q1H9Pt9LMui1+sRJx5LKyexNIX1jQuMx2OazSZPPPEEaDq1soZpqYRBzrlz53Ach+vXr3Nj85BBaGIYBhfOL5OKnDBKcZXiQlQUhfbKGgM/ZGNjg1KpRBj6015txfoiCsOCrnkX5U0FXABVUQi9PjCtxc+yO4sdP5j1vNJ0c1oObiH0gsMwOexRqdaL0p0kwypVCYIA1XTIshjP82a9tWZ6NG3mJgAzH1EIwWQyYXmliBCEYQh5zvb2NouLi/i+T7Vaxfd9kiSZ8SB0XUfRFebm5jg8PCSMIiaTLs1mE8dxyLQ7hYXRYBdF1ImjAX/48WsozhyyXOPv/cMfxqzW6R/sIJSUVqvF5uYmJ0+eZG9vj4VWnWajVjC+bIulxQvkeY7zrndy0B3w+ae+zHDUZzgcziqiH3zoAo5jce7UOidOnJrNOktLS2ztb9Oq22RxiKoUs4eURYPAreGIg/EBGxsbXLp6jUqlUhRoxjFzc3MkScLVW1tUKhU8P0IoOqpS1AqOx2NqUfRNwcmbCrgqOUgd1Z4rpm8BqqERBjneZIxMEkxVJbc0giglDxI0I0dXQcXGdi0MxyVKdaQCh/0BS0tL9Pt9okmMpijEoU8SeVTLrVmnljTNsR2LKPbREJimjmXruCUN/IzU80iSiCyKWFxcJPMmmJaBZekkSYhlFdbYLDkEMsXINLZu3aZarZIS4zYcEiXDrTdI4xRVt9Ftl9KSjTE+YPfWLb7w1etUKw4feP97aa2cJxoHaEnO4e0dNm/e4uDggLLj0qzV2bm1zZe/+DR5lmE4Ou/5jnfQbjVACBbWlnh/q8nAn3Dzxi7ve++72bp2heWlBqdPn2Z+fh6r0pqVjcdxTGthiVGvy42rl6k2XG7cuEGSJDiOw8P3nSdMcp594RIri21qVZPuXh9jeY6rN24zPz/PA+fuI5HFLQsyAVEEmT8swOx5AMg8h7vYhulNBVxQQCTkeLOy9TgKirTsZIKt6gyHQ1THplJrE6c5ruuy1+2RoqIbdkF+EQ5uqQpSzJq96UlEnAQkSUS9XmU4HM6srlDUotesENPGJBlxLNE0hST3UFRJo1El8iYMBl3q9TqKqWCYClZaxEKFEEyCgNZ8m8gPKJfLbG1tzXxiRSkI8XmaU7aKaTPu7/Lck59jaXGdKIp4/O3v4oMf/CDt9hxBUKRVDw4OsCyLJEm4ffs2i4uLVFtLNOZWuNLdYefFl/i13/g92nN1/rsf+q9Qq9Cs1vjbf/Nvcbi/S793QE1fo1Kv4VoGIk9n2awi+eLg+T6N+TkMU+HqlZtEUyup6zpKFrKyuoSpCSy3Qmd3j7LjYtv2bF1RdqsYtkW326U+10JVNA4ODhBCUIoiwjBEMy2EuHvrtDfd4kzKGD84nPV8NU1zlp48yurkeT7rLhgEAcvLy7Pma6qqsrCwQKlUwjTN2ZSuqiqrq6uzHgDAbHEH09UvzAoFjx5CyVFViecPUTVJteZOO7fEJGmAaakcdHaIptZ4MpnMYrntdps0TRmNRgXHIU0plQqyTxRFbF55HkvN8X2f+fl5oCDMIMA0Te67775Z55ylpSV0XWcymfDu9VUeSxTeo7oEiaDamEc1yvzh7/97Lj//VQadQyxVp768ysrZ+7j4xNuZb9YwVcjjYFq9oc5cJt0piiL3uh10XefRRx/l8ccfp1arsd3zePbKbSJhMRwOSdOUbrfLM888QzAlJ43HYzY3i2b1pmmiaRr1esEScF2XIAimYcK7h5M3GXBTMm+EHQcYhkk48YgnE+JRj5KlopsaqmlQa9bZ299CVwWWaUKaQZbjTwIsTeWlS8+yv3OD7v4WmrTRUMmUjJ2d21imTh4FRWeaw8OCqKMK+r1BUcCoC3RHJwjGJMEE3ZA4GqSjAWFUTHtRKFGilDSIUBFouo5qFbNCGsXYThlNt9ANG9sp02q1EELQarXQDIc09vEPd8nCkIXVUwghWDpxjsb8CoqmgZQoMiuC+nHRjyGKIqIo4sd+7McYb+0jgxhDKjRI2OyO2emOuLkZsHNpl4OrLzHxtlFJsTQVBRWr0cIpuRxsXSaaHCCUFFRBrFvYqkIaJ6yun2LlzEnQVSaBz/bmFgf7A0zFIB6NqZgmiqojLAerNsfIL5rkhXmKoql0u13G/QGjcR+pCqrthWmGsViD3E15kwH3zu2f4E4+3veLUMxR04k4CqiUXMLAQ5HgT7wiFOQ4BEEwLZmBSqVMuewShkXoLM/zWcbtKKST5zm9Xm92cLMkReQSxzCJw4g8zej1+1RbDZrNOtVqZRY2iqJo1qgknWaw6vX6LKx2tPgbjUazcFlxw5UIf9xHt0ziNEXRNc6cO0tzroUw9GI+VaA51+Lk6VNomsZDDz2Erut85CMfwWnUefH6NZ6/dIkLzWVacYYWhPQSny+88BzbWx2GWwOyKCZLUgzLRNNN/DhhcXmdyB8T+2PyNESV6YwsdBRKbDQaANOIS4ODgz2SJCJN04JyahgEQYDvFw1d+v0+WZaxtrY2CyeWSiXSNCUIAnRdn95P4u7h5E0H3KOKhaNymaPpTFVV2tNiO0dXyKMAGfskXoA/GhNPfHzfR1EUPM8reAIyZDjqMhr3iOOYWq026/ptmiZSyhlokyQhiiKqbonYDzAVDSWXxH5AuVEDQwORsbu3SRiN0TQNy7Je1pkQmHX/9jxv1lDZcRyiKOLg4IAvf+kLyNhDJccoOdi1MpVWg1PnzvLgY4+AqpCJIjuakFOfn+PEiRP0+30uXLhAlmU8efM6h1FEZzjmZKvFe+oNlqIcQ7e4NRzyHz77FFlcpre5i0gybNvGKlWptdqEGeRej8HuLfo7N9DTAEVRqFarM8A5jkO73ebMmTMsLLao1UsYZvGZdrtdFEt6HrVabZY9jKKI4XBIGIYkScJkMplVpgRBANzdPMSbDrhHoA3DkGq1WtR1TRlWR9uqyMmTmF7ngCxJsU0L2zRnfuQRkbzT3UdVBZZVUBl3d3epVosQmRAC13Wp1WrUarUZ16B/0EUmGaPhkLLjYhkm8wsLVJsNgsAjigL8YMLNmzeRUuJ5HoZhzCz3EYXPdV1OnDjBwsLCLGHiui4PXjxHmsRkcYRbLiEUBVXX0E2DpbVVJNN7EigCp1Si2qjP9tNxHDRN4+ITTxBLAZpBYCmcW2rzwPIq/uY+SZIRWS4f/vl/yZOf/TzXr1wliCKyXKDpJrV6A1sR6CLHVAVJWIT+jh5HrZfu9AJTWV5eolRyMU1z1o7KcRwGg8Hs3FhWQSQ/CqWpU2aY4zjflE7lby7gSo1M6Ch2GdOx8eMU3a4gcVAsC0VXGI4OSaOMJI6xTYdYxAy9EamiEYQplUaLhaU14lzSKs2xt3mV8WGXnds3qNfrdLpd0M0ZFbLf7zMZx8RxSv//b+/NgyQ97/u+z/Ped98z03Pvzu5iLyyIxU2RoAiQFBmKNh3qsuxIURVLqVKc2FWKjii2EslROYmSsizHUUqpSHGlypFKskhJdiiS4gVeuO/FAthrZnfn7vt6+73zxzvTWAgrkQQXwMLZb9Vsd+/M9PH0b55+nt/zPdptNENH1TXCKKLT6ZCosLF5Gb/dhkGKKxmMdptoqkRre5NkNKS7sYFjqBw8eJBUyARBwGDs0/X7DLKAFBmRgZLGRLFEnCbYnk2cmmTxENWwqUwtoMgmAgWFnKuchDG6ouNWXFRdolYrYWky/eef4gcsmWWrTLDVQkoy5qoVbltYxAhVfvqnf4ZA9fnsFx7hhedfpdPYJegPAQXJLqMUq6i6gT/sk/abkIzQdAnLc5BTCYHM1HSdg0ePUi2WmK5UsXWDYThmfmGGQwfnuW1xgYLlYBoO9UoNy8jN9zqDPpKac3xtQyHY+0QUcXpDi+0N9yWEOCWEeF4I8at7tx/fE0kihPijvdsHb+BzeB00q0Couihy/pcqySmakU0YYdd2GPbNksvlMnEc52ymVmvi5Dgej6nValiWlZ+xt9vEcYxhGJMjXsdx2N7enjhDDoZtRn4PTZdx3Nw/y/O8ydrYtm1qtRrVWhHXM5HkNJeXpyF+v0M86jMOumi6AiiYepEsyzAMIz9VCvpkKciSQdkroBkemFWq1etL+BqNBv1+n1OnThHHMcvLy3zkJ36SUw8+iNnf4UMPPcx6t0mn32NK07jr6G38r//8f6ZW8ShXKzzxwnP02h2ieIwQCboh4QuRewHbHlsbOwybu/R2tlGSCElOUTXByO8RhENOnjxKpVJgeXl+wqcdj8dMT0+zsLAwOYq2bZtKJSfs93o94jhGVXMbqrdi1r2e5ux54JQQ4r8VQvwCb6VY8jqIkVHsIikaSRKTJhGaLhh0I6Jx7uzoDwfMzs7S7/mkk9ANjXEco5km2Z7px/7atdfrMT2dUxyLxeJk07TPUZBleW+tlmJpkMQRtqGxs7GO6Vq0G5u4usmg30fTNBqNBgWluGeaYdJuj5FFxnjQRTVzqmSWZdiWhyJbGIWMwWBAq9XCcU2KjouuGowTgaJaCLPyhnHIsmzPvTLDsizW1tZ4//vfzze/9ghffvJJlksm9VPz/PkjX+K2EwfZ2WxjmkUuX9nhyNQMp+aW4FSZOx+4i2lXI5EzonhMnCYsFeugKSQC2rUq48tX2Wleprm1g17Ol2e6rqOokKQBcTLGtPJJY25ujjRNWTt/cc+bwebggQNsNXbzTzF/RLFYxHEchsMhR04cozw1BeLG2upft0chhHgW+Dzwr95KseQbHxiULANNY2SqGKZDTEbQGhCHESoSo8GIcOyToZIpEm55hv44RtZhECTYqSCLE+I4QFFVsiShPlWh1W1h2zZxEuKPfRzbA/JjZUWFNBogpSGypiKIGA+GHFicJRx0yGSF0Z5i4Ny5c9Trddobuxw5dpTdVhPbdrEMkyiBwSgkTSQs0yFJ072NyZgEQbFaQ5NkwmEXX9awNYOxZuCUpt4wFOleD3t97Qr33n03Tz32BKsXL/LwD36QF196glcuraHddYo7HBtVSBSPHeCB+hx3bW3hlIv4wZjp+RkKBZfhoEvYbaCrOuuX1jjn+1SX5sgEPP21bxH7Q46ePIEQPlfOrE2ITbVajTEqc3MLNDp96vUZtre3cul8uZgrJGyTIM1tXYMkRagGZAr+KMI0HRKR5SoBWeRm0TeoVK47f2dZ9h7gw8CKEEIB5ve+tbB3u3CDHv+NSEHRbISkkZKfs8dpNDk4SJIE07AQikwY5c39fTLH/oED5B9nQlFJkUjS19ps4/EY27YRQBxFjH0/V/LKIKQMkSWQJXiuzeraRcYjn9ZugyTK739fHRGGYe7R0OuhKAqtTptev49bLKCoMBz1GPl9FDXFMCxkWSXLxGTjoigKkqYiyyaSarxhGJI0IU0SbFXi3/3bP+bQgUV2N9d5/rmnuXTuAsPhkFK1wkvnX2Wj1eCltQs89eKzqI6OamnUD8yj2xaN3W3GrTbNjauEwwHddocwyriydpUXn32RqxvrqKaFpKi4lovjeDQaLcIwRlV1kCWEIuO4LpZtUCx5mJbO4cOHJ3ZWvu9Puiu1Wm3iRr6/vHorcD1fBQN4DPhslmWPCSEeA1aBbwP/CFgG7n5rnk4KQoLMQdELRLJKLEFEXjTj3oBisYiiG3T6Y1BeS7TRNGNPbiIIg4xqtcooEQjFJCbG87zJset4PEaM87P6bByRxQOyBGxNMOx2UBUJPxlTcU2iQYBrWgT+eOI9FoYhhw4fICGjUqnkZ/5pgl30CJIYWy6QphKKomPoHlkaI4kM1/HwB83cm0vTSDUV3VlE92beMBJSJiOHIZ/9v3+fA9UCF59+Aj0O8HsBP/6JTzKMAh598gnazRYf/cTHGQcBpiQwLJNEFkRpAskYx9Bo7m5hGyaXr2zztcdfpNkbMlOw8VyLH/mpH0dGxzNtrq6u0Wx0SROJfs+n3/Opzc8QS+CWi8QiQdPyPcbW1tZkIpGl/NPBcV3a7TauZee+Y3vHwmmSIMk39gDiemvcMXDHNbffMrHkGyHtfQaoKO48RuMcQnWIigvEncvorozfj2lt7GIWy1TKHplZYW19g+myRyoMkjQhERG9bgfHqSKklHQco1gSSZSgIBGFEZqsM+xusH31PMdP34lCShj4yJKBaapYakKr0aa1tYllemiGTnu7jYSKVy7Q6raYrs/QGfRxNBdbU1ENG80qEQuBIhvYtosqJPxsgOO4hEHu0ZAZVdAthKKjuTU0+41eA0994XP8+q/8E/77f/wPaY/ahGnChUsXmc3gbOV5hBA89+g3WZop4W9f5erVq6ytbmKZKpWCi2sauZWSqtJqtXj0qQskSYJnexw8MM2pO09hWEZ+iNDq8K1zmySM8EdDsixjaWkJochIqomsaKRyRrFYRDUdhKTQar+MqptkQmb5yHG2trZQVBM9DVCVFKEIdM/Fq82BosMNVD/ATUeyeQ12qUbzagnNltDHQ8JEkMSCKMyQDYNe38ff7VBe8lg5fJRGb0DY6Uwoh67r4o9TpFRCtjQUJT+22c/vWr+6hiqnLBw6imo67Gxcoew5BKnP5uYmFS839LAsi+FgiK6baLaKREYQjZibX6LvjzBMh1RSMCybcSShKzq2XUBVdTTNIIwjyBSC0EcSCqppo9ouESrC9NCs6/NUH//W57Fdg3/5+7/Hz/29nyIzY44evw1ZKDQHPq1Wi1dWr6CYNl955DHG4zFzSwfZuLyGpKj0RmMsXaJczgP3Dt82zbFjx5BlmWFrBxGMGPh9Ov0B51fbXL64zomTy8yurEw6Afv84v1Mt/0+bxglTE1N0Wg0yLKMra0tCoVCHjFgmui2SZiCZuaz7lvRx71pCxd01OIicX8dRVxFVUziICRNBbZXJegPsS2XRMgMowSnUEHbUzrsa9LiJMAxNNIgYTTyJ0qKOI7RDYXSdA3dMBgGY0y3SN8f4g8GVKtVXAOSyJ8QzYMgYhAF6JZJ0SvT7A/zA4JqmcFohKoYWKaLW6oyCjV0VQNFIMtAahAnPv1hg1L1GGNkUDQkp4bmlLl217Lf5ei9+iweGXGs8uu//Tt88odOMzs7y+//m88RxQHNZpMHHniARrvH7OwscTbi+ZdX8Uc9NndbLM7Ncmy5wszMDC+++CLz8/OviTllnceePsPWdpsgkhgmgnqhDEmM67oTtYkkSfR6PSRNJQ0EKhIoOppuUqvVJgSg/e5MEAT5UTcSc4sHmFs8gPQWhfTdXAcQ1yATYNRXyIpzBJmGMEwSzUYtewz9EVNTMxi6hWLYqIqOJjT8cYwsq6TjEVqaYGoZg04TQ9MJ+m2iYEwQjukNR8ytnMIpTGG7ZWy3RCopOMUKx07ezjhK6UUSiVHCLruMglHuTatZ1KozOHaB2sIipekZogSKxQpRlCBJMnGcYJp6vhFLFTTVxS1ZGIpK3Z0iySQUo4TqVMmUmfxj9JrP0Ilfwk5Z0JgAACAASURBVB13Mb1gY6oRhekqzW7Mc0+f5fRikaKt8oGHP8TZ1XWQBHPz0yhyjBCCu44eoFA/wIreRfPqvPTqBltXeogQhq0B6xev8pdff5mXXtlhtzmmXJ7Cs3VSEdIeRji2iywpdNpd2q0OFy6+yu7mFmokSGIF/JA0GGE4Ol65SH8UoBoqQhHYno1hGxSLxYnC+kaTa/ZxE8+4TPK7xqpKPFKQhEav28MyCoyTDNV2UG0XgUIc56F6gpRer4dcKDLOxhPjEM0w0RSdoT/mwMptqKpBRpjbNIncoNlUZXrdxmRH7DgOvb0+aiblv9vp95hZmKM7GgNMjqdlw0LVLFTNQNVz/4BJMnoCyBqm6xIqDmgWslnAK71xbbvvKHP4+Hs4srTAM8+8THs44MvfeBTHLqCoJmmm097dYbnm8sD7P8CffPYzkEkEqUTcWefv/pe/Srb6LXxVwi27KDs6zVDizDPPEQQB4yClUilNiN5RFCFnCWlq8vwLZyfev5qmIRm51CnLMiq1OUZ9Hw2LTNGp1+toqoVsmROpjlsooBsWsqpj3GC5zrW4aWfcfeybv4FEmoLnFRknAll3CDMZzbBQDRMhq/T7uapV0zRGo1z3VCqV8nWWplOuTVGdqaObFqZpTvK3AIrF4iTJfL+1s7/s2BdampZFaapKEEc4jkOyZwcKIKsmSAqabk9yx/YL19AtNNMilRVUq4hqV7Dc65/f7Lf9itNzNJpdhMioV2ymp6dRDZNAaASpjKLq/K0f/ji//Tu/y9mLG5xZ28SbqlMoFPgf/5d/zuYQzrz8Mv3xmEJ9mqdeeIlmf8Srq1cYjnpYto5XsOn2XtPyDYdDthtNTMclzqA3HNHY7dLYbSFJoMswGvQYdFoTnnOpVMIrlJAVDU038QolpmbqGKZ1ww8drsVNPePuM65GoxFpItA1iyQeUZiewXJLSGEEsgooCCX/G9wnMdumhZ/6kzy0MIkZxxm2V0ZRDcKxj2EYDAa93DQ6CVAkiWKxSBhqGKZKHId4nseoO85ZXuUSQRgSS5AMAnw/VzpomoYQMm6xjFBz4vv+WhGANEZzPWTLQChlZLdGptjX3WXvt/eOn34AMxpx9MgxomETvzfAtl1ePbfGSC7QjwX/xT/5TQquhS9UVKfIl77xJJ/+0HFW11d55KUNhlev8sLZLa40tjlY85ifnWVhuspg1EdRoNttUiw6CNUmCXJvM9P2iFOBZtgoacof/9Gfc899J9ANjcbWOkngo4YaVnUOWZYplUqEmkW5XM4DrC2LYnWaTFJJuGH+H2/ATVu4AlDihHQckEgJquUx7vdRTBfLqZDIKpbtQtRHiIhev8nc7FQuSEwMoiwjji2CcY80CPH2QuJkRWHkD1A1CcIEWaQohoHv95GBomXQazbpttscXjlIq7mNygDNFGSqSrPRYH5mmt54RMmwSSOwbQ/NK6AZVSRdJc0ylCwkS8ZIxER6AVXzULUicbGKkGyud4y0T+VUFAWBwvSh9/Dqs9/mzJkLVAsuKRkf/PCHmDtykP/r9/4fPF1GklQGo3XmKhUe+JG/z+WNFzlateiPVCwDarUi95xeYcpTMQ2LK5e3GYQJu+0229vbuYnJcItypUCr28FNclceWZZpNpsEuiCSZLrr63SDKD8yDxL8xiYUC6C6NHe38TyP2bl5NMudvH9v3Xx7Ey8Vsiz/Z1/Cs090TtOUJOqTxUOCUXviRjM9PY3jOK8j4USxj+0YeAULQ5EQSUQS+Ni6ipzFGIpEMOoT+H0cQ0NXeJ0D487ODoZj0xuPsEwTU5MouwXOv3QBv9tn2B8gKTKZKqOpuft5kvpISR7viqyQygaGYoAzS1Y+iiJdPyopJ1q/RnSXZSjWZ7Crc6ysrOB5HmEYsrOzQzAY8cMfe5j77j5Bs9vh3vs+yN33/wBbW1uMoxRXifnP/qO7+dB9p1goKdRdGVkziTKJjZ3GpAsAr0ltXNedcJS73S61Wo2rV6/Saffp93w6nR4vvXiJKFDod2OuXLmSa/lUlWo1d0Hf95h4O3DTFq4Q0Gw0cmOPvU2abefrxzQa4A+adFvrOE5uB78vbdnfLEmShD8e0Grv4LoWUhphKALigCQYMWg16XcamLJAFRmalJHusfwrlcqEMO2nEbX6DINujzjo5ikzkcS42ycY+fSHA9xqiYKX28SnWYCSRciSIJNUDK9KaM6g2WVEmkGmvGG2vTawJX/tgtxzR+HEPe/lz/7szya6s93dXc6ffRVLk/jRT32Ue4/Mcu7xb/PCI5+n+cKXuOvEIR7+8EfotreJEjAsj/MX1+gMfM6eu0AqqWxubiLLMocOHaLb7WKaJouLixw6dIjl5WU+/elPc+nSpZxrmylsrO9SKk5Rm3b50lf+PU89883JwUYQBBM/hf0/vrcDN+1SAVIKnk6YqkTtlN1hh3ErIRqmNMMumuWyudvgD/70ccrlMkmSMFdxOXjwIM1mLrbU0iFGQaNZMnANj3ZjE1WRMFWZLGgy9IdouBglg6E/Jk6hXl2g090liFoEYQ8zDol8n1QkZImF7ghCqY/fGVEtptRnarhmhW7zMnZlCoFBSIZn1sGdAq+K+dfMsvu4boNevPZ/urdIxbG4vLmOVZ/HMgSrV1eZm5/nxz75IT7wvj6Xr2wSBxKHZqcZjlo8d/4MS1N1ur0Bhw6doBdmDAe5j+/MfJ2qV+TS+QvcffQ4J+69DyEEzz77LHPLM3zl0W9zz4Pv544wZGerz8Wzz9Hojpivz/K+e08zGvTJrNzH2DZtGv2AarWKrt84N8bvhJu2cIPxmFG3y+56m8/+4Teo1g5x5I67GCUJF596lme+9RKNVgfVtXjm2Qu5jOalNcQ3zlAqlUjTlFEv4Picw3u7PvOH6niWQRj4dHsDPNdiGA4JB0OGUSf3xR0N2NldR9dlVEVnOJQZhWAZRcpmgSDMi6zRaKCnMpZXRFINukMfb3YGAx36CVe2NtiQQ1bumkFI9vc9yL/+f/wOX/y9f0Ft/hDts+cJFJf64hzj8ZjP/tnX+a9++R8yv36RR774Tc689DxRFDEzM8va+gaKonB1a4etRpvhcIiu65QlgxNHjhLHMXc+/H78RoevfvWrVCoVguEIS9PRZQXHM3nyiWdZOnKEAQqPfvNxDi7O8dGPfJi//MIX+E8+/XNEpPiDwUTV+3bhpircLMsml7phcGlziy9/6avESgGrOMVgHHF5Y51ICBrtPmECl86v5mvaLEKVZRRZYTDOvQMU06TZHTAYVkiTCIGGIoFmmQx6HaQsoVgo0I/6dFtNDMNga+sqs3N1ZFlmemqO7s5VECkpKbL82skWyAhZRVY1HK9AOI4gyfjaX3yFZ77xOG5lkfknX+bHfulXQHsj++t7GhckagvLMB5imZeoVCp7uRc1bMej0x+wtLzCbbft0Gq1KBZnicKEKE6J4pCNzW1Uw0RRFCzLolyusri8hB8GxGHEzvYW/mjIixvrVHZ2eeihh7h48SInT57kF3/h59nY3mFnZ5fhsItjqeiWS2t7d2+Z4aDY3mRjeaNSdb4TxH6x3AB8z3fU7/cnYrv92/s6/PPnzvIH/9u/RJI1CrNHKNtjutvbRKMRF3e3ubK9i2E6rG82aLfbudfYnhVTrpVSMPWYKc+hZOl87L1zzM/UkAS57FwWDHsdLpy9wuFThyZHnI1en0qlhiQp9Lp9XEun395BEoKiYzDy++xuBVw6d5WPfeqjaKUCw8Tgs//637DT6zMIYiSzQlmTSETAXR+4hx/5B//793WClCZw/uVnWD13hpLS5ZUXVglFyky9Tnunxbm1TZJU4pM/dD+PP/YUo2FCsVDl0uVX8p5wscirr7zC1NQU9Xqdy80mH//wD3FldY2gN+DZM09TqVT2xJ05E+/EiRNMT08zSMd41VkMt8xMySUY9Wk1dnH9Acb0LM7KCsXqEo7jTEStbwXuvvtunnzyycnO4O2fcTNy9z5JwrVdsiik0dihVq+hG/kmiqDPr/3af0fQG1CfnmG78yRTTi4YTBWJmYrKztaQUdsnixNsw2QwGDBKBBDkyexxwiiC3rBDxTN5+gWP+eWD6FqGoZv4w11Uu8TSCZtsnOCPhmi6RMnUkcJcbKmTEacShWKVMAgIwoQ0y4OqVSsmimX+/b/9Gt949jwVx2Rh4SC27zP0U/wgRBE6L3/rPMo/CiBViKUIhe+doxoLmK6USYdzjJoCy9apGB6jTkCSBhxeOcBn/vRzGGqKPxphyCq9KxeolPNAkXOvvsTtt59E0zQ2Nzf5O5/4UZ5+/FEUOaO9s8Hi9DRBEEGccP8PnGZ6bpEUmYOHDrOztc12o8XS4grPPPs48WiMKRLGgx2K5RKzXr6JfSuL9np4B5YKMe1WA8dxUHUHoSjUajVIEhqXLzAzO8c//Y1/Rnsr98pKwwjbtCaEj9XVVXqDPlEqMR7nbad9PVerN2Q8Hk/8F1A1RBYRhiGfawWEiswdJ5Y5sWKQZCaDTgNH01jf3mZqqvy65PVSqYSmaWy1Ogy6fTRVxR9FpFlKvzfiqaspv/Mr/yeGXWSmUCQzDFSvxkZ7DSVNObC8zNZ67jq5e+UVanOnSZDf1IBrEmjTc3jFEpfOOxxQDS6fO0evtcuhwwd59dIqJ48tMxyENHbalL0CspDY6fTwPI8Ts/PUq2W63S7Hjx+n296iPjdFsVLlwCf+NhfPPMfO+hpHkhqxDEoWs3Z5lXLRxbBV7lw+RWcwIo7j3HSv6BAOAqT1c5TdjyE7b52u4K/D9cSSQgjxW9fc/mUhxC/vXf+cEOL+vbTJNweRUKqVSNJren57x6qzC9N89ctf4i8+/wUc0+K+03fjGCZT5QobGxu5pWiWUSqViOPcxdB18+DjfXM1YGLS0RmM6A3GJGnGxnCHbz99iS999SxRVEGfuo3q4gmu7OZssH3pt6Iok77xvvR837ts0PdpNNpsbTawTI9YcUkkCzOLiYXObmdERG6CvLW1NaFFdnbWIcvXqm9+3CQy1aS+dJjS9AIzM7PMz9Xxh2MOLM3xgffdw4nbD3Lk6AJuQWEcttnY3CGKMwbDPBFodnaWUqnEoNdEMw22mw0+87kvENg1Hv7kj/Ge976Pgm0y7Lb42Ec/wuPf+iYXnn6GF775bUZbW5Pxnpqaojv0aW+tMmg33/xr+j5wPSJ5JoT4x0KI/zjLsj/Jsux/uObbv5Fl2aNCiP73+kD7ngj9no+hSHR2dijP5esihIJmFrl67kX+xW/9K0adAer8IpvNBqki89gLz6HLCru9rbxP2x8Sk9EZ9BkOhwyHQ5IkwfJKExebNE3xvLwYW60WmuzgRzFXtrd58cJlDi/MUnRl7n/4PnbOn0WSUwaDPrbtEkQBKBqu6aIhCMYJFgo7rQ2SUUYnltjY3eZk3aMzGtGlwJymIwchU47LOBnQDWDBKeC3dnHc3BdMEF9vyL9LSLmnmO2xfOIexv0euiaxsblNdWqKRmObY4eOopLbpqqagTMIefmFsywuLjKyPTS3g6YLKpUS/X5Apz3kqUeepbm+zqvP1eh0Otx33+2cXl7mkc/9OSfrJS5sbrG1vsb22kXmDh2jXnERmiBIoGAVee7pb/PgwtE3+ZrePP46zdkA+C0hhPed7kAI8bNCiO8Y2JcH1oHreaimiWmaxFGAJOXuk1ka8/Wvfz3XUpVK+L5PY+8AQpZlhr7PYDSiPxxONE1hmFvg7/ty7ctFgIkeyjBySU+a5JkRtu0yHAUTF8d9R5Y4zmmB124y9p2796XwUZQwDGJk1WE0jDB0HUc1sEgnsndZljF0C8dxWd+4QrVWmfwx3TAIwfTcPEEqUGWNXrNNv9nJUzT3DgHq9Tq6rrO4uJhLbNLcKklRNLrdPu12m52dHXRDnWj2HMdhZ7dNs93joY9+lFDILC0vUCwWsG2TZnOXLIm5fPECUzM1Ws1d+u3WjX1t3yWupzmrZ1m2CYyBeSHE3wLYm3n/GyHErwETvlqWZb8L/C7foatgGHlL6MrlyyzUp/csLg3SPWt3y3X5zGc+gyRJe4EZ+SlWEOSk6TDOmVymaaIp+aUQAllVJibMWZLQarWwLCv3SQhC7KLO0pE52p0dYj8lEzIb7SFzZQeRBhiGzWjPOsh1nT1GmITYy2boDYYTz4XhKOXSeo+Xt5ucb4X0422KmsLJlUV6QW4XFQQB/cGIcRIwP10lzYY3jJO6f1CRklBcOMACMhuXzhJ1uzjjhI2NDR5++GHOnj1Lr9fjwMH5yWmjpMuEQYqm2mxtb6CqOqalc/T40uTwIMsyokSQaC5nr+5yx0Mf4dUnv8yR2w6yML9EP5bZunQOeWxzeWcDfdxjd211sjR7O3G9pcLm3uWRvf966ZrvfWzv6n1/9fe+E/ZZTzO1KhcuXmJlZYX1jYvMuTNEo4heQUNVdXy/QRRCueLhOM5Eo2/J1iSIrhv28Pu9XPqt6Lm9fBhSKOQz5b7Zmu2ZSLrK9uYWqWqzvFhhPOyRRRKDUYKpGOiFaSQdXMo0NjfRlHzWVhSFZnMXx3MZ9Xsk4yEVT/CNgclVP2WQuojMpuV3MduXeWDxIM2wieEcpD+4hGmaE9MR1a6BnKLdoL1wnsgpM7t0mOlajXa7zdraGlNLi2y22vhRxtZuj+V6ndZui1qtRncU72W+SQjNpOi6HLztOOvr65RnZnPpfhxTLlgESUalPMWZtV10w0RjzO6oQ7fZx08jlIJFnSIzmsmFfvK2Fy28jV2FfQMO1TBYWFjgypUrLCwv0VjfwXYLpMF4skGSRN4xMIzcLHg4HFKfnqc/HuWGzIY06Sb0RsHEPbvX601II/sSnV6vR80r0R76KFJGt71LR00521vn4EceQFMEsm7Tbe1SLlcZ+PHElHmfoysLiTSKEfKYBWdEQVHZdhU2t3eplUscL89QtjKKlsf5qxu5yZxrosYDbFvPuwlZQiKkGz7gsmZQnZqhOjtP68o5uo0WpuGiqxqRyEjHGrGh4McRB04cJUkSikKa8G+XlpawXQ/DMHIe83iEKgvsQpllt4StLbN95lto2RhzZgbXddnZ2UGanSFsb1IrfcfV5FuCt61w910XSaM8qbxQoLHdxZmqYWgqLz3xRJ4grusMBwGOm4du7J9/Nztt4ixF0TVkOV/fmqaJpml5WHKSUCgUJm6MkiRhudaE7dXcXOeVYYPxsM+Dd51CjHcwZQlHV4gzA1UxSfaWI/vBe71eD0838f0AU1bRo4wH3zNNlplsbe7SWCwx9kO04Sa2u8DyiSMU6xJf+tpTJFKKEg1YOH0IDBvSIbFQb/yAK9rkanHuMIXqkJefeBTPtujHESdOnMD3faxCmWKxmDPf/PEkaNuyLPqdJl97+mkOHz7MsdP3YHkl7EIJ2/EYhRGuU+LZv/xjTDt3XbQsi3EQoszcxvtPv/9Gv6Lv7mW/7Y8oBNJe+LFX9GiOu+iaQnP9yoSA7TolkjS3WxqN8v5hlPkTQri0l5gzGo1QdGtCqbvWbEPXdTRNpeR6qKmgXCwQ+13qtSpf+fIX+MQH7+Hy6kWGaYtqqYpp2liaSqPTxHVdtre3c4shy2JEi+HIx05dSnWdlp+gXB5TLbh4B8oUrZj6kbspLCzz/NVXUBSF5eVlettr3HHHHaQAWULyFgzntS22RJaI4twn+GKzwcXzq5Nlj1Opsbt2FdM0afQ61Go1ZmZm+PznP8/i3AwrB5bxHDs/fJAUZEUjScHSNeLKEnd/6Ef5xv/7hxOVdILEqfsfQvVqb8Gr+s54Bwo3f0jd9iAZUDEKEPhI41Usw8QpFwlaPbZ2fdqDIZmAWMjossROY3eSTK4Y9qQTsJ98ruuvpSzGcUwSZ+zu7lKvlHGLLpkkIEo4dXSeoiOYXawhyRFSNGIcJ6h6FbeyQBwFyLJOuVCgP+wRZAntfhcRCsabXWozCwyPHMeIYmzbZP74QXCn2N6MeerbLxCmGaPmBoeqOqWTP5gzGGWPv5kj9iaH85rrKgGSa+PNzSKdkVhv7pBlGa7rUglzI+aVlRXUaMyTj3wFRVE4evQoa5dXuffBH+TEffeiWvnY7a/RBTKKyBC1Re79xE/nYYJpirQnUXqn8I7ycTNJJssgjWJsr0TR0uh1BlSqpdflPOxrw/YdxPcJy/v5t6b5mlgvCHJJje/7E+Phy5cvM+i1UGRBpexx9+k7kU2dlIxhv08aBshZQhKFk7WeJEmTpYuu63iex85un1TW8KWUKNPoRTKZVUW4swx8iy99+XF6XZ/5uWnqtRKaZSIqi2/jgGZIIm8D1ut1NCGjSwrZnoXqaDRibW1tIrl3XZfd3V3uvPs0C4vLeIVpJCkPR9zfWMJrok+nPIVieQjdfZ2Z9TuBd5ZILlRSGSTToTI9S8nIEJHCcDykUqlQr9c5dOjQ3g6/OTEL3ieXz87O5i2cKJoUeq1WyxPEPW/yBszNzbE8P8vxI4coOhZPP/5thqFBrytoboX02000KUPhtfXxvry61+shhMhDmcswtbSAPXUblzaHGFNHMGdvZzer0hxIXN7YwnVVonGXoiPzwAcepHPNGvStH8+8wMrT01y5cgUpg0qxRH1qmpWVFVZWVrBte+L0Xq1WOXr0KLplUl84gKQ6k0+sfaPn1919ln9pijwJQHmn8LYtFfZZaNcORhKMSITMoN/m0uo6Jw+vsBtepeCoPPLIX9Do9EkzgVfK1QNbm7l0fHYuT7PZ3NxEkzJiGWRNQyBjyCq6lTPEkjShO0rRRm2WDxyh220xXZ9mZyfjyuo2/WYLSxdIQcD0tEsYjZEBkSQEwx5y4qPpAjmVmSo4GLUp3PoRnnt2i6g9QKRZLh3qdfnCn3+eiuMxHgyYdm2UusPsAw9eV1v2ViFBz7PixgGyauIUHGwvL1RJzvAKHqalvW4vkKQh4ThFtYqIa+SN1ye3vz2v47vBOzbjpmmKrBpIqonllqjVZ7GskDuOLLG7FeTEG5hwSMMwzF2u9xrqi4uLecLhnjvLvknzfnjGtR95iqJg2QWEpLGz20ZIGpmskSITpoKOn7K5OSANpTxYpNcmHPUhzdfNqSLh1srIVpXeIOLLf/kVlo4cIVN1tnZ2+eM//BOGgx7jYRtVDVCzLvd/8JPgLDJ6G9/syZupW6ycPD0ZG0VRctfLvfagLMsMh8PJ6WK1VkMxdJBuosr8Dnhb22HXQpIkEjQyQNZs6osHabz8DPJgm7vuvZ3jdx7nkW89Rhgl+GHEwuwcvV6PYrHI/EKeq1AoFHjlzPPUajVUVcVzCxMj5CRJ8Ds+QRCjOiZPvfAinudNvBdEEHD6jtuYrpYYtjto+hz93hgla9BrblM0ZdI4ILMMaotzXIkjJHuRziilXK7x2S9/lShMkYWCbXuoJMhiyNxMkY/85N+nuPIBYgRWGoH09mxiBCkgkckmK6ceQP+TP0ZV1Qmd8dChQ9RqOSdh32XddV3mVw6QCoFEdjNNqn8j3lEFhMxrEuZIr7HebbHeDbjy0qOcPnWan/jU3ybOUs5cPIetV4miKGc3dVu88MyTNHa3OLJ0iJ12k95oSDDymZ2b4/yVVaIkIUxlHHlMteTQbo650NgiimMkXcV2LZ44t8Hzlzb5gcPLPHHmPLWayyFdwyMj6nYwilUMTWY4jBhnCprp4sYhB2drGIY6CSXxfZ+V+Tpl1WVmRWX+3h9H2S+Bt6lo9x4MyD/RNVXGKhRIBk1EFFErV+g08+Nw23TyA4pwjKYXMMqL+wuEt/G5fn+4aaQ7nufxzAurnDm7hqIXMK1X+cCBBbxCgaMHDyHLOfXx6tUr7KyusTxdYMaW0J0q0zNVwjRh2A+4tLpKt9tlNB5jySqua7O+06Q5ihmGYxACSzGIxhGD0ZiCa/Jyu4MIEs5uBJx59jLLNcHJkzWavR1mK4eRJA0yGdeQOPPCi8zNqJjuFIVCHq3abreZtgsEZoMf+Lu/jaK9jRuyvwGmU2Qc+giJiQE1gKFqqCUPVbbQi7VJqua7CTdF4SZJgq7rbDf6JEJlPA5otls8+uijHLrtCAcOHiRMfHS9jCoLaoZFv9vCmKkyGEHPH9Jtdmm1+q8LGcn8IWCSpII0EwhJQTMNyrUpwlFIvVKk32vTHY2ZKs0QDgOaWxs8eM+dBGGb8kyFNMkYDHoMBiP8S2tYmkxzfZNMLiAScy92CcplD325glKce2cH8xp0Ol0a65s4joWuaRMSkKmpuQhFVyjVZibeFe8m3BSFCzntsTJzjJ3eOXZ3ttH0HUZhwIvPv4AEvPcHH2Jqagpd16kfvp3KqE+n3aDXOYeURshZHmO/vb1NJmUkcUzZ0kjTmDAV1EszzC0tcmltlavnr6AWqgRxmzQKCXohF16+SK3m8qE7CzjVFE1ykFQbXbfJhEK5BI99/RxqOqLsKOheRmfnInNzcyxMz+LMubznwz9PpLwZcc5bgwce/CCPfnlMGI4xjTwJU5IkFDK8cpny9Dz1QyffdUULN0nhTmiD/S4PffhDfOFrj/DqxZd538wCsmrQ293llXMv0+62qFQqrF06P1EqqKbC9sYVWt0hQZaiOxbJaITIMkrlKqMwZnN9i//8536eq5de4pvf+Eu6qYLw1xH1RQqaRhj2+OT7jjBbcbhtoYishJiui+WWEW4RPZShPcItqZw/v0ukTXNcL2At2siux8ETDzB7/0dBsrnxNJo3j1P338+586/w8uPfZHM05sChFXTL5NQP/wQHDx/Of+jGiWXfVtw0o5xlGfV6HUVRqFarfOzjv8Rv/+Y/5fCBRcLxkGOlEs1mk36/j7rHvw2CgOOH5ie2oIPNdSxdJ5MF43F+ghbEKe12m5Mn7mDU2WV+bonW2hZHbzuRxxv1dvjQexf5yINLqPKYcJAQxQG2XUfTPELJwrRc6ssaT3/7SUq2hSEJIimhOnuA4twhAfk67QAACE1JREFUZu/+OJlUQGQgpynIN8kmR5H51E//DF/0PFafe4nT97+X4w/eh6Fd44HwLpxt4SbaRvq+zxe/+EXuuOOOPT9ai7/30z+D0DRmF2eIolzBsLu7S6fTmQSRPPfcc4xGI3q9HgtzM5BGWIZKpZSfuXc6HY4dO8av/dpvoComDz/8Qxi6zbMvPMZ4sMG9dyzyn/6d99Hf2STuBQgpQjdUwiBBoKPoHsgWVzc3uXTxVQxdJonHZLLEHfe/n5U73wdqASEiMikluVmKFkiATMg88JEf5qd+5b/m9g98EF1xSfa+t//1bsR1R1kI8eLe5W/uXf5PQoiP7wkp37xQ8m+A53lYVYd/9qu/zMP3f5CdzVXOPPsiaSSxcbnDlctryElK0TAp1Rwurl+kPR7SC2IUw0TVZBzHm0QzqarOKBijaCqbuzv4os3v/sG/5o/+3Z/iKik/+J7b+JH3rvAPfvwhDCEIhgO2NtcpqDqmBLKUMBy1SWTB9tVXufTEY5xaPoibSBy+/SQf+MlfQJm/B5x5kr3AFZFTvG8ayCgI8oMZXTdRVR0hKZM25LXtyHcbrmsIIoR4Mcuyk0KITpZlRSFEG/hWlmUfF0J8CfjFLMue+iu/9qYXS/skmvbay/zsz3yazYGC73epVsu4rsvGlavUKh5ZGHNgaYneqEmj3aPbG+HpOS+hVCqxtno1jx3dyzK7vL1NuzdgGKXMVxwO1OuYho5JxoffewzXkpmfrfDS019jtmLglEu5SkHPCIVJsbqMN3+I1ecfRwlDonSAt3gflds+gFGu5j1aIZPd4ESZW3gjvh9DkGsLc3IHQoifBX72+3HE2W9hlWaX+NQnP85jz77Elx9ZpVRYwB/5jIIxvq8SDn0uX77MzHQRz3Ho930c20QSGWN/SKVczM/lRUav20ZRlAn5pt0bUq8EiCTivnvvYnZ2FjUb0Vy/zGy9hEqeKlmwSviZT5QqOG6JNEmoLBxCkTQ0y8ZcOoVQZ69Zx94q2ncC1xNLPnjNzd+95vJrIu+bOFmWTVS9361Y8rt7NiY/8VM/wcH6Zzl+dIXHn32RJIknjuz7allVUSAaYak6Rc9lenqazc1N2r021WqVQb+DrikM4rxok0xihMb5K9uUTI0nn3key3NZ9saYyYhS2WEcDIjShN7IR7UUNMMklSQkIVE8cjdqYQ6SAiMZrCxfG0rs/wWn3ETbhf9f4HpiyUeAk3vXf3Hv8peu+ZHvWSj5XUMA3gGWpi3OvHCe8xeuMgwTxiEUbAtXllBtg16vxVJ9msOzU2w1t1GGDUqqoLo4nxPKKyUqlQp+GNLvN7nQ9ukOBAYRtmsiGQbNtRdRvRHTroVTrmIVZhkHIYZbQXMkNM1Edy3GWgWrcBiQQQZr73m+fm14q2jfbtw07bB9pFGCeeAequ7TVEsWcdsnSCzmpquEnRYiC1mqVyh5Kr3WLkfny3Q3VpkuVhC6QFFMdL0IwMbWLkcOTjHTCTm73uOuE0e4vHqBohayOFOlXvVIw4Aok5BSUK0CmmUj6RKoBZBKuHOnyFBvLQduMtxchZuBpMq4C7ezfPw4pxsyL529QDQMWPQElel5ZFshGsaUiwqzXo21q7s89MBpLq9vMX1gCd/36ff7hGGIWymhmQZL9gxzlR7Lsw73L9+BlPikIkTXYPHQMfwwolCeIkxSgjBCEyq2O4VaP0ImOROW6q3ivXlwcxWuyL8EKsce/BSa+jk+/t6jvHxmgyRtsbI0j2loDAe7ecj0aIRlShhFlRWvhmGE9KWQasEjiTMOpDJhGFKvl7myMWSqbhBFAbZTJpNypXEvjinO1BmHec7uVLFEoOpoi3cTSzUUcbMN0i3ATfyeKO4s87efZtjYZH6qylZziyQcoakpxeosURRRLVSQspAkDdF0jzAcU1+cwfcjTMNi6/Iq9ekiUdBgqm5gmBmIFMPQ0Jzqa/L2LCFBwnaKdIwFiotHQdgot6bYmxY3beGSSti1JUhkhsMLOI5LEigkcYiQdSw918yalgciRdXATGOCIKFQrNBqdtAsk76fB8lFWYBhWFiWh6aaGIUC4/EYRQh0TSdTDRKziFmtgrSXZSBudQtuVty8hSsBUhV7voo+c5LR6qNocYt41CZEYxxGIMmUl8uMBh2G7RaKYlKdKbC+vs6B226j1dqYpPDMFg+iOyZIGYZjksQaRdMlS2KENkPpwHvgDSEjt4r2ZsXNW7i8JrBUFAXvwF2Eg22SQZty0iUORyRRzCBOsewKru0RBD5RkjC3dADVNCmXZ5FlGV3XiRIYRzG25yLpBmqcMZRLODPLpOrUrZ3Xuww3deG+jicqm2iFRbTCPEl3k2TUgXCEmURIIoEwQLOCifeCEAJbtyeWpIopcGSLDIVEspDKNRynRix05FtF+67DTV24b4QESMiFBeTCQv5fo4Bo1CCI2qhRmzD0QY5J05ggS9B1G0loDBUXw61h2B6xMCe82XfZANzCHt7975uuo5pzqKIKSYZOCokPewbHkmaBpKFJKaBCpvwH8KJv4V3/HiaTs1cdaZ88IFuwdzWDCYtCXHt5a3nwrsa7vnBlIvIqlMgmMaLxNT+hgIAAUESKTIogg5tGGXYLbwbv+sK9tgBfm0Tf+LJyI3+JWy2u/zBw6128hXclbhXuLbwrcatwb+Fdie+pcIUQF4UQmhDiubfqCd3CLXw3+F5n3HNZloXAH7wVT+YWbuG7xffaVbiyd3n1r37j7rvv/v6fzS3cwl+D1dXV192+rjz9r4MQ4gJwDHgiy7I7bugzu4Vb+B7wPRXuLdzCzYJbXYVbeFfiVuHewrsStwr3Ft6V+P8AU2ltVLO32jkAAAAASUVORK5CYII=\" y=\"-10.629576\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_3\">\r\n",
       "    <path clip-path=\"url(#p0807f8224a)\" d=\"M 103.259821 67.893862 \r\n",
       "L 233.497305 67.893862 \r\n",
       "L 233.497305 169.818862 \r\n",
       "L 103.259821 169.818862 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#0000ff;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_4\">\r\n",
       "    <path clip-path=\"url(#p0807f8224a)\" d=\"M 76.286751 82.820439 \r\n",
       "L 260.470396 82.820439 \r\n",
       "L 260.470396 154.892293 \r\n",
       "L 76.286751 154.892293 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#008000;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_5\">\r\n",
       "    <path clip-path=\"url(#p0807f8224a)\" d=\"M 122.332668 46.784503 \r\n",
       "L 214.424483 46.784503 \r\n",
       "L 214.424483 190.928224 \r\n",
       "L 122.332668 190.928224 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#ff0000;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_6\">\r\n",
       "    <path clip-path=\"url(#p0807f8224a)\" d=\"M 124.966071 84.881362 \r\n",
       "L 211.791055 84.881362 \r\n",
       "L 211.791055 152.831362 \r\n",
       "L 124.966071 152.831362 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#bf00bf;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_7\">\r\n",
       "    <path clip-path=\"url(#p0807f8224a)\" d=\"M 146.672321 101.868862 \r\n",
       "L 190.084821 101.868862 \r\n",
       "L 190.084821 135.843862 \r\n",
       "L 146.672321 135.843862 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#00bfbf;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"matplotlib.axis_1\">\r\n",
       "    <g id=\"xtick_1\">\r\n",
       "     <g id=\"line2d_1\">\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 0 0 \r\n",
       "L 0 3.5 \r\n",
       "\" id=\"mcd77f8d7b2\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n",
       "      </defs>\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.557143\" xlink:href=\"#mcd77f8d7b2\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_1\">\r\n",
       "      <!-- 0 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 31.78125 66.40625 \r\n",
       "Q 24.171875 66.40625 20.328125 58.90625 \r\n",
       "Q 16.5 51.421875 16.5 36.375 \r\n",
       "Q 16.5 21.390625 20.328125 13.890625 \r\n",
       "Q 24.171875 6.390625 31.78125 6.390625 \r\n",
       "Q 39.453125 6.390625 43.28125 13.890625 \r\n",
       "Q 47.125 21.390625 47.125 36.375 \r\n",
       "Q 47.125 51.421875 43.28125 58.90625 \r\n",
       "Q 39.453125 66.40625 31.78125 66.40625 \r\n",
       "z\r\n",
       "M 31.78125 74.21875 \r\n",
       "Q 44.046875 74.21875 50.515625 64.515625 \r\n",
       "Q 56.984375 54.828125 56.984375 36.375 \r\n",
       "Q 56.984375 17.96875 50.515625 8.265625 \r\n",
       "Q 44.046875 -1.421875 31.78125 -1.421875 \r\n",
       "Q 19.53125 -1.421875 13.0625 8.265625 \r\n",
       "Q 6.59375 17.96875 6.59375 36.375 \r\n",
       "Q 6.59375 54.828125 13.0625 64.515625 \r\n",
       "Q 19.53125 74.21875 31.78125 74.21875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-48\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(30.375893 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_2\">\r\n",
       "     <g id=\"line2d_2\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"87.485714\" xlink:href=\"#mcd77f8d7b2\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_2\">\r\n",
       "      <!-- 100 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 12.40625 8.296875 \r\n",
       "L 28.515625 8.296875 \r\n",
       "L 28.515625 63.921875 \r\n",
       "L 10.984375 60.40625 \r\n",
       "L 10.984375 69.390625 \r\n",
       "L 28.421875 72.90625 \r\n",
       "L 38.28125 72.90625 \r\n",
       "L 38.28125 8.296875 \r\n",
       "L 54.390625 8.296875 \r\n",
       "L 54.390625 0 \r\n",
       "L 12.40625 0 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-49\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(77.941964 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_3\">\r\n",
       "     <g id=\"line2d_3\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"141.414286\" xlink:href=\"#mcd77f8d7b2\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_3\">\r\n",
       "      <!-- 200 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 19.1875 8.296875 \r\n",
       "L 53.609375 8.296875 \r\n",
       "L 53.609375 0 \r\n",
       "L 7.328125 0 \r\n",
       "L 7.328125 8.296875 \r\n",
       "Q 12.9375 14.109375 22.625 23.890625 \r\n",
       "Q 32.328125 33.6875 34.8125 36.53125 \r\n",
       "Q 39.546875 41.84375 41.421875 45.53125 \r\n",
       "Q 43.3125 49.21875 43.3125 52.78125 \r\n",
       "Q 43.3125 58.59375 39.234375 62.25 \r\n",
       "Q 35.15625 65.921875 28.609375 65.921875 \r\n",
       "Q 23.96875 65.921875 18.8125 64.3125 \r\n",
       "Q 13.671875 62.703125 7.8125 59.421875 \r\n",
       "L 7.8125 69.390625 \r\n",
       "Q 13.765625 71.78125 18.9375 73 \r\n",
       "Q 24.125 74.21875 28.421875 74.21875 \r\n",
       "Q 39.75 74.21875 46.484375 68.546875 \r\n",
       "Q 53.21875 62.890625 53.21875 53.421875 \r\n",
       "Q 53.21875 48.921875 51.53125 44.890625 \r\n",
       "Q 49.859375 40.875 45.40625 35.40625 \r\n",
       "Q 44.1875 33.984375 37.640625 27.21875 \r\n",
       "Q 31.109375 20.453125 19.1875 8.296875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-50\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(131.870536 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_4\">\r\n",
       "     <g id=\"line2d_4\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"195.342857\" xlink:href=\"#mcd77f8d7b2\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_4\">\r\n",
       "      <!-- 300 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 40.578125 39.3125 \r\n",
       "Q 47.65625 37.796875 51.625 33 \r\n",
       "Q 55.609375 28.21875 55.609375 21.1875 \r\n",
       "Q 55.609375 10.40625 48.1875 4.484375 \r\n",
       "Q 40.765625 -1.421875 27.09375 -1.421875 \r\n",
       "Q 22.515625 -1.421875 17.65625 -0.515625 \r\n",
       "Q 12.796875 0.390625 7.625 2.203125 \r\n",
       "L 7.625 11.71875 \r\n",
       "Q 11.71875 9.328125 16.59375 8.109375 \r\n",
       "Q 21.484375 6.890625 26.8125 6.890625 \r\n",
       "Q 36.078125 6.890625 40.9375 10.546875 \r\n",
       "Q 45.796875 14.203125 45.796875 21.1875 \r\n",
       "Q 45.796875 27.640625 41.28125 31.265625 \r\n",
       "Q 36.765625 34.90625 28.71875 34.90625 \r\n",
       "L 20.21875 34.90625 \r\n",
       "L 20.21875 43.015625 \r\n",
       "L 29.109375 43.015625 \r\n",
       "Q 36.375 43.015625 40.234375 45.921875 \r\n",
       "Q 44.09375 48.828125 44.09375 54.296875 \r\n",
       "Q 44.09375 59.90625 40.109375 62.90625 \r\n",
       "Q 36.140625 65.921875 28.71875 65.921875 \r\n",
       "Q 24.65625 65.921875 20.015625 65.03125 \r\n",
       "Q 15.375 64.15625 9.8125 62.3125 \r\n",
       "L 9.8125 71.09375 \r\n",
       "Q 15.4375 72.65625 20.34375 73.4375 \r\n",
       "Q 25.25 74.21875 29.59375 74.21875 \r\n",
       "Q 40.828125 74.21875 47.359375 69.109375 \r\n",
       "Q 53.90625 64.015625 53.90625 55.328125 \r\n",
       "Q 53.90625 49.265625 50.4375 45.09375 \r\n",
       "Q 46.96875 40.921875 40.578125 39.3125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-51\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(185.799107 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-51\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"matplotlib.axis_2\">\r\n",
       "    <g id=\"ytick_1\">\r\n",
       "     <g id=\"line2d_5\">\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 0 0 \r\n",
       "L -3.5 0 \r\n",
       "\" id=\"m95ac95bf99\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n",
       "      </defs>\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m95ac95bf99\" y=\"10.999219\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_5\">\r\n",
       "      <!-- 0 -->\r\n",
       "      <g transform=\"translate(19.925 14.798437)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_2\">\r\n",
       "     <g id=\"line2d_6\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m95ac95bf99\" y=\"37.963504\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_6\">\r\n",
       "      <!-- 50 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 10.796875 72.90625 \r\n",
       "L 49.515625 72.90625 \r\n",
       "L 49.515625 64.59375 \r\n",
       "L 19.828125 64.59375 \r\n",
       "L 19.828125 46.734375 \r\n",
       "Q 21.96875 47.46875 24.109375 47.828125 \r\n",
       "Q 26.265625 48.1875 28.421875 48.1875 \r\n",
       "Q 40.625 48.1875 47.75 41.5 \r\n",
       "Q 54.890625 34.8125 54.890625 23.390625 \r\n",
       "Q 54.890625 11.625 47.5625 5.09375 \r\n",
       "Q 40.234375 -1.421875 26.90625 -1.421875 \r\n",
       "Q 22.3125 -1.421875 17.546875 -0.640625 \r\n",
       "Q 12.796875 0.140625 7.71875 1.703125 \r\n",
       "L 7.71875 11.625 \r\n",
       "Q 12.109375 9.234375 16.796875 8.0625 \r\n",
       "Q 21.484375 6.890625 26.703125 6.890625 \r\n",
       "Q 35.15625 6.890625 40.078125 11.328125 \r\n",
       "Q 45.015625 15.765625 45.015625 23.390625 \r\n",
       "Q 45.015625 31 40.078125 35.4375 \r\n",
       "Q 35.15625 39.890625 26.703125 39.890625 \r\n",
       "Q 22.75 39.890625 18.8125 39.015625 \r\n",
       "Q 14.890625 38.140625 10.796875 36.28125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-53\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(13.5625 41.762723)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_3\">\r\n",
       "     <g id=\"line2d_7\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m95ac95bf99\" y=\"64.92779\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_7\">\r\n",
       "      <!-- 100 -->\r\n",
       "      <g transform=\"translate(7.2 68.727009)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_4\">\r\n",
       "     <g id=\"line2d_8\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m95ac95bf99\" y=\"91.892076\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_8\">\r\n",
       "      <!-- 150 -->\r\n",
       "      <g transform=\"translate(7.2 95.691295)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_5\">\r\n",
       "     <g id=\"line2d_9\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m95ac95bf99\" y=\"118.856362\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_9\">\r\n",
       "      <!-- 200 -->\r\n",
       "      <g transform=\"translate(7.2 122.65558)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_6\">\r\n",
       "     <g id=\"line2d_10\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m95ac95bf99\" y=\"145.820647\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_10\">\r\n",
       "      <!-- 250 -->\r\n",
       "      <g transform=\"translate(7.2 149.619866)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_8\">\r\n",
       "    <path d=\"M 33.2875 146.629576 \r\n",
       "L 33.2875 10.729576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_9\">\r\n",
       "    <path d=\"M 206.9375 146.629576 \r\n",
       "L 206.9375 10.729576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_10\">\r\n",
       "    <path d=\"M 33.2875 146.629576 \r\n",
       "L 206.9375 146.629576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_11\">\r\n",
       "    <path d=\"M 33.2875 10.729576 \r\n",
       "L 206.9375 10.729576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_11\">\r\n",
       "    <g id=\"patch_12\">\r\n",
       "     <path d=\"M 80.920603 74.817299 \r\n",
       "L 125.59904 74.817299 \r\n",
       "L 125.59904 60.970424 \r\n",
       "L 80.920603 60.970424 \r\n",
       "z\r\n",
       "\" style=\"fill:#0000ff;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- s=0.75, r=1 -->\r\n",
       "    <defs>\r\n",
       "     <path d=\"M 44.28125 53.078125 \r\n",
       "L 44.28125 44.578125 \r\n",
       "Q 40.484375 46.53125 36.375 47.5 \r\n",
       "Q 32.28125 48.484375 27.875 48.484375 \r\n",
       "Q 21.1875 48.484375 17.84375 46.4375 \r\n",
       "Q 14.5 44.390625 14.5 40.28125 \r\n",
       "Q 14.5 37.15625 16.890625 35.375 \r\n",
       "Q 19.28125 33.59375 26.515625 31.984375 \r\n",
       "L 29.59375 31.296875 \r\n",
       "Q 39.15625 29.25 43.1875 25.515625 \r\n",
       "Q 47.21875 21.78125 47.21875 15.09375 \r\n",
       "Q 47.21875 7.46875 41.1875 3.015625 \r\n",
       "Q 35.15625 -1.421875 24.609375 -1.421875 \r\n",
       "Q 20.21875 -1.421875 15.453125 -0.5625 \r\n",
       "Q 10.6875 0.296875 5.421875 2 \r\n",
       "L 5.421875 11.28125 \r\n",
       "Q 10.40625 8.6875 15.234375 7.390625 \r\n",
       "Q 20.0625 6.109375 24.8125 6.109375 \r\n",
       "Q 31.15625 6.109375 34.5625 8.28125 \r\n",
       "Q 37.984375 10.453125 37.984375 14.40625 \r\n",
       "Q 37.984375 18.0625 35.515625 20.015625 \r\n",
       "Q 33.0625 21.96875 24.703125 23.78125 \r\n",
       "L 21.578125 24.515625 \r\n",
       "Q 13.234375 26.265625 9.515625 29.90625 \r\n",
       "Q 5.8125 33.546875 5.8125 39.890625 \r\n",
       "Q 5.8125 47.609375 11.28125 51.796875 \r\n",
       "Q 16.75 56 26.8125 56 \r\n",
       "Q 31.78125 56 36.171875 55.265625 \r\n",
       "Q 40.578125 54.546875 44.28125 53.078125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-115\"/>\r\n",
       "     <path d=\"M 10.59375 45.40625 \r\n",
       "L 73.1875 45.40625 \r\n",
       "L 73.1875 37.203125 \r\n",
       "L 10.59375 37.203125 \r\n",
       "z\r\n",
       "M 10.59375 25.484375 \r\n",
       "L 73.1875 25.484375 \r\n",
       "L 73.1875 17.1875 \r\n",
       "L 10.59375 17.1875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-61\"/>\r\n",
       "     <path d=\"M 10.6875 12.40625 \r\n",
       "L 21 12.40625 \r\n",
       "L 21 0 \r\n",
       "L 10.6875 0 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-46\"/>\r\n",
       "     <path d=\"M 8.203125 72.90625 \r\n",
       "L 55.078125 72.90625 \r\n",
       "L 55.078125 68.703125 \r\n",
       "L 28.609375 0 \r\n",
       "L 18.3125 0 \r\n",
       "L 43.21875 64.59375 \r\n",
       "L 8.203125 64.59375 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-55\"/>\r\n",
       "     <path d=\"M 11.71875 12.40625 \r\n",
       "L 22.015625 12.40625 \r\n",
       "L 22.015625 4 \r\n",
       "L 14.015625 -11.625 \r\n",
       "L 7.71875 -11.625 \r\n",
       "L 11.71875 4 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-44\"/>\r\n",
       "     <path id=\"DejaVuSans-32\"/>\r\n",
       "     <path d=\"M 41.109375 46.296875 \r\n",
       "Q 39.59375 47.171875 37.8125 47.578125 \r\n",
       "Q 36.03125 48 33.890625 48 \r\n",
       "Q 26.265625 48 22.1875 43.046875 \r\n",
       "Q 18.109375 38.09375 18.109375 28.8125 \r\n",
       "L 18.109375 0 \r\n",
       "L 9.078125 0 \r\n",
       "L 9.078125 54.6875 \r\n",
       "L 18.109375 54.6875 \r\n",
       "L 18.109375 46.1875 \r\n",
       "Q 20.953125 51.171875 25.484375 53.578125 \r\n",
       "Q 30.03125 56 36.53125 56 \r\n",
       "Q 37.453125 56 38.578125 55.875 \r\n",
       "Q 39.703125 55.765625 41.0625 55.515625 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-114\"/>\r\n",
       "    </defs>\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(84.940603 69.549487)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-115\"/>\r\n",
       "     <use x=\"52.099609\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"135.888672\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "     <use x=\"199.511719\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "     <use x=\"231.298828\" xlink:href=\"#DejaVuSans-55\"/>\r\n",
       "     <use x=\"294.921875\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "     <use x=\"358.544922\" xlink:href=\"#DejaVuSans-44\"/>\r\n",
       "     <use x=\"390.332031\" xlink:href=\"#DejaVuSans-32\"/>\r\n",
       "     <use x=\"422.119141\" xlink:href=\"#DejaVuSans-114\"/>\r\n",
       "     <use x=\"463.232422\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"547.021484\" xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_12\">\r\n",
       "    <g id=\"patch_13\">\r\n",
       "     <path d=\"M 53.947533 89.743876 \r\n",
       "L 98.62597 89.743876 \r\n",
       "L 98.62597 75.897001 \r\n",
       "L 53.947533 75.897001 \r\n",
       "z\r\n",
       "\" style=\"fill:#008000;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- s=0.75, r=2 -->\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(57.967533 84.476064)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-115\"/>\r\n",
       "     <use x=\"52.099609\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"135.888672\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "     <use x=\"199.511719\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "     <use x=\"231.298828\" xlink:href=\"#DejaVuSans-55\"/>\r\n",
       "     <use x=\"294.921875\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "     <use x=\"358.544922\" xlink:href=\"#DejaVuSans-44\"/>\r\n",
       "     <use x=\"390.332031\" xlink:href=\"#DejaVuSans-32\"/>\r\n",
       "     <use x=\"422.119141\" xlink:href=\"#DejaVuSans-114\"/>\r\n",
       "     <use x=\"463.232422\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"547.021484\" xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_13\">\r\n",
       "    <g id=\"patch_14\">\r\n",
       "     <path d=\"M 97.131261 53.707941 \r\n",
       "L 147.534074 53.707941 \r\n",
       "L 147.534074 39.861066 \r\n",
       "L 97.131261 39.861066 \r\n",
       "z\r\n",
       "\" style=\"fill:#ff0000;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- s=0.55, r=0.5 -->\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(101.151261 48.440128)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-115\"/>\r\n",
       "     <use x=\"52.099609\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"135.888672\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "     <use x=\"199.511719\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "     <use x=\"231.298828\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "     <use x=\"294.921875\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "     <use x=\"358.544922\" xlink:href=\"#DejaVuSans-44\"/>\r\n",
       "     <use x=\"390.332031\" xlink:href=\"#DejaVuSans-32\"/>\r\n",
       "     <use x=\"422.119141\" xlink:href=\"#DejaVuSans-114\"/>\r\n",
       "     <use x=\"463.232422\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"547.021484\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "     <use x=\"610.644531\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "     <use x=\"642.431641\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_14\">\r\n",
       "    <g id=\"patch_15\">\r\n",
       "     <path d=\"M 104.535603 91.804799 \r\n",
       "L 145.39654 91.804799 \r\n",
       "L 145.39654 77.957924 \r\n",
       "L 104.535603 77.957924 \r\n",
       "z\r\n",
       "\" style=\"fill:#bf00bf;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- s=0.5, r=1 -->\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(108.555603 86.536987)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-115\"/>\r\n",
       "     <use x=\"52.099609\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"135.888672\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "     <use x=\"199.511719\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "     <use x=\"231.298828\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "     <use x=\"294.921875\" xlink:href=\"#DejaVuSans-44\"/>\r\n",
       "     <use x=\"326.708984\" xlink:href=\"#DejaVuSans-32\"/>\r\n",
       "     <use x=\"358.496094\" xlink:href=\"#DejaVuSans-114\"/>\r\n",
       "     <use x=\"399.609375\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"483.398438\" xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_15\">\r\n",
       "    <g id=\"patch_16\">\r\n",
       "     <path d=\"M 124.333103 108.792299 \r\n",
       "L 169.01154 108.792299 \r\n",
       "L 169.01154 94.945424 \r\n",
       "L 124.333103 94.945424 \r\n",
       "z\r\n",
       "\" style=\"fill:#00bfbf;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- s=0.25, r=1 -->\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(128.353103 103.524487)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-115\"/>\r\n",
       "     <use x=\"52.099609\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"135.888672\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "     <use x=\"199.511719\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "     <use x=\"231.298828\" xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "     <use x=\"294.921875\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "     <use x=\"358.544922\" xlink:href=\"#DejaVuSans-44\"/>\r\n",
       "     <use x=\"390.332031\" xlink:href=\"#DejaVuSans-32\"/>\r\n",
       "     <use x=\"422.119141\" xlink:href=\"#DejaVuSans-114\"/>\r\n",
       "     <use x=\"463.232422\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"547.021484\" xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "  </g>\r\n",
       " </g>\r\n",
       " <defs>\r\n",
       "  <clipPath id=\"p0807f8224a\">\r\n",
       "   <rect height=\"135.9\" width=\"173.65\" x=\"33.2875\" y=\"10.729576\"/>\r\n",
       "  </clipPath>\r\n",
       " </defs>\r\n",
       "</svg>\r\n"
      ],
      "text/plain": [
       "<Figure size 252x180 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from IPython import display\n",
    "def use_svg_display():\n",
    "    \"\"\"Use svg format to display plot in jupyter\"\"\"\n",
    "    display.set_matplotlib_formats('svg')\n",
    "\n",
    "use_svg_display()\n",
    "# 设置图的尺寸\n",
    "plt.rcParams['figure.figsize'] = (3.5, 2.5)\n",
    "\n",
    "\n",
    "fig = plt.imshow(img)\n",
    "bbox_scale = tf.constant([[w,h,w,h]], dtype=tf.float32)\n",
    "show_bboxes(fig.axes, tf.multiply(boxes[200,250,:,:], bbox_scale), \n",
    "    ['s=0.75, r=1', 's=0.75, r=2', 's=0.55, r=0.5', \n",
    "     's=0.5, r=1', 's=0.25, r=1'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ow7tPhsHfo5Z"
   },
   "source": [
    "## 9.4.2 交并比"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "NC9vYwpAfqbx"
   },
   "source": [
    "我们刚刚提到某个锚框较好地覆盖了图像中的狗。如果该目标的真实边界框已知，这里的“较好”该如何量化呢？一种直观的方法是衡量锚框和真实边界框之间的相似度。我们知道，Jaccard系数（Jaccard index）可以衡量两个集合的相似度。给定集合AA和BB，它们的Jaccard系数即二者交集大小除以二者并集大小："
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "_WaR09ocf8VP"
   },
   "source": [
    "![image.png]()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "dtPvf1fjf-TS"
   },
   "source": [
    "实际上，我们可以把边界框内的像素区域看成是像素的集合。如此一来，我们可以用两个边界框的像素集合的Jaccard系数衡量这两个边界框的相似度。当衡量两个边界框的相似度时，我们通常将Jaccard系数称为交并比（Intersection over Union，IoU），即两个边界框相交面积与相并面积之比，如图9.2所示。交并比的取值范围在0和1之间：0表示两个边界框无重合像素，1表示两个边界框相等。\n",
    "\n",
    "![alt text](http://tangshusen.me/Dive-into-DL-PyTorch/img/chapter09/9.4_iou.svg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "M-VHkUvGgYJg"
   },
   "source": [
    "下面我们对其进行实现。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 336
    },
    "colab_type": "code",
    "id": "zxTycGJfHLt6",
    "outputId": "cb406be5-3cd9-4aec-9563-76023bf95afc"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<tf.Tensor: shape=(2, 1, 4), dtype=int32, numpy=\n",
       " array([[[1, 2, 3, 4]],\n",
       " \n",
       "        [[5, 6, 7, 8]]])>,\n",
       " <tf.Tensor: shape=(1, 2, 4), dtype=int32, numpy=\n",
       " array([[[1, 1, 1, 1],\n",
       "         [2, 2, 2, 2]]])>,\n",
       " <tf.Tensor: shape=(2, 2, 4), dtype=int32, numpy=\n",
       " array([[[1, 2, 3, 4],\n",
       "         [2, 2, 3, 4]],\n",
       " \n",
       "        [[5, 6, 7, 8],\n",
       "         [5, 6, 7, 8]]])>,\n",
       " <tf.Tensor: shape=(2, 4), dtype=int32, numpy=\n",
       " array([[ 1,  2,  3,  4],\n",
       "        [10, 12, 14, 16]])>,\n",
       " <tf.Tensor: shape=(2, 4), dtype=int32, numpy=\n",
       " array([[0, 1, 2, 3],\n",
       "        [3, 4, 5, 6]])>)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "set_1 = [[1,2,3,4],[5,6,7,8]]\n",
    "set_2 = [[1,1,1,1],[2,2,2,2]]\n",
    "lower_bounds = tf.maximum(tf.expand_dims(set_1, axis=1), tf.expand_dims(set_2, axis=0)) # (n1, n2, 2)\n",
    "upper_bounds = tf.minimum(tf.expand_dims(set_1, axis=1), tf.expand_dims(set_2, axis=0)) # (n1, n2, 2)\n",
    "\n",
    "tf.expand_dims(set_1, axis=1), tf.expand_dims(set_2, axis=0), lower_bounds, tf.multiply(set_1, set_2), tf.subtract(set_1, set_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "WBfm4qLCfg00"
   },
   "outputs": [],
   "source": [
    "# 以下函数已保存在d2lzh_pytorch包中方便以后使用\n",
    "# 参考https://github.com/sgrvinod/a-PyTorch-Tutorial-to-Object-Detection/blob/master/utils.py#L356\n",
    "def compute_intersection(set_1, set_2):\n",
    "    \"\"\"\n",
    "    计算anchor之间的交集\n",
    "    Args:\n",
    "        set_1: a tensor of dimensions (n1, 4), anchor表示成(xmin, ymin, xmax, ymax)\n",
    "        set_2: a tensor of dimensions (n2, 4), anchor表示成(xmin, ymin, xmax, ymax)\n",
    "    Returns:\n",
    "        intersection of each of the boxes in set 1 with respect to each of the boxes in set 2, shape: (n1, n2)\n",
    "    \"\"\"\n",
    "    # tensorflow auto-broadcasts singleton dimensions\n",
    "    lower_bounds = tf.maximum(tf.expand_dims(set_1[:,:2], axis=1), tf.expand_dims(set_2[:,:2], axis=0)) # (n1, n2, 2)\n",
    "    upper_bounds = tf.minimum(tf.expand_dims(set_1[:,2:], axis=1), tf.expand_dims(set_2[:,2:], axis=0)) # (n1, n2, 2)\n",
    "    # 设置最小值\n",
    "    intersection_dims = tf.clip_by_value(upper_bounds - lower_bounds, clip_value_min=0, clip_value_max=3) # (n1, n2, 2)\n",
    "    return tf.multiply(intersection_dims[:, :, 0], intersection_dims[:, :, 1]) # (n1, n2)\n",
    "\n",
    "def compute_jaccard(set_1, set_2):\n",
    "    \"\"\"\n",
    "    计算anchor之间的Jaccard系数(IoU)\n",
    "    Args:\n",
    "        set_1: a tensor of dimensions (n1, 4), anchor表示成(xmin, ymin, xmax, ymax)\n",
    "        set_2: a tensor of dimensions (n2, 4), anchor表示成(xmin, ymin, xmax, ymax)\n",
    "    Returns:\n",
    "        Jaccard Overlap of each of the boxes in set 1 with respect to each of the boxes in set 2, shape: (n1, n2)\n",
    "    \"\"\"\n",
    "    # Find intersections\n",
    "    intersection = compute_intersection(set_1, set_2)\n",
    "\n",
    "    # Find areas of each box in both sets\n",
    "    areas_set_1 = tf.multiply(tf.subtract(set_1[:, 2], set_1[:, 0]), tf.subtract(set_1[:, 3], set_1[:, 1]))  # (n1)\n",
    "    areas_set_2 = tf.multiply(tf.subtract(set_2[:, 2], set_2[:, 0]), tf.subtract(set_2[:, 3], set_2[:, 1]))  # (n2)\n",
    "\n",
    "    # Find the union\n",
    "    union = tf.add(tf.expand_dims(areas_set_1, axis=1), tf.expand_dims(areas_set_2, axis=0))  # (n1, n2)\n",
    "    union = tf.subtract(union, intersection)  # (n1, n2)\n",
    "\n",
    "    return tf.divide(intersection, union) #(n1, n2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 202
    },
    "colab_type": "code",
    "id": "VYx1uaHslsLZ",
    "outputId": "a34efe4d-10de-4fbe-d88e-158a04675be9"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<tf.Tensor: shape=(5, 1, 2), dtype=float32, numpy=\n",
       " array([[[0.40139753, 0.4186508 ]],\n",
       " \n",
       "        [[0.24606743, 0.5284858 ]],\n",
       " \n",
       "        [[0.5112325 , 0.2633207 ]],\n",
       " \n",
       "        [[0.5263975 , 0.5436508 ]],\n",
       " \n",
       "        [[0.6513975 , 0.6686508 ]]], dtype=float32)>,\n",
       " <tf.Tensor: shape=(1, 1, 2), dtype=float32, numpy=array([[[0.27712333, 0.5681683 ]]], dtype=float32)>)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.expand_dims(boxes[200,250,:,:][:, :2], axis=1), tf.expand_dims(boxes[210,260,1:2,:][:, :2], axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 185
    },
    "colab_type": "code",
    "id": "ehlo5PIxlwfb",
    "outputId": "ee09332f-4aec-45a1-b4fb-7a72f3bbea8d"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(5, 1, 2), dtype=float32, numpy=\n",
       "array([[[0.40139753, 0.5681683 ]],\n",
       "\n",
       "       [[0.27712333, 0.5681683 ]],\n",
       "\n",
       "       [[0.5112325 , 0.5681683 ]],\n",
       "\n",
       "       [[0.5263975 , 0.5681683 ]],\n",
       "\n",
       "       [[0.6513975 , 0.6686508 ]]], dtype=float32)>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.maximum(tf.expand_dims(boxes[200,250,:,:][:, :2], axis=1), tf.expand_dims(boxes[210,260,1:2,:][:, :2], axis=0))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "b9dgT9Gy9e7W"
   },
   "source": [
    "在本节的剩余部分，我们将使用交并比来衡量锚框与真实边界框以及锚框与锚框之间的相似度。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "tJHnkPyb9h-V"
   },
   "source": [
    "## 9.4.3 标注训练集的锚框"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "SsN4h88P9jF_"
   },
   "source": [
    "在训练集中，我们将每个锚框视为一个训练样本。为了训练目标检测模型，我们需要为每个锚框标注两类标签：一是锚框所含目标的类别，简称类别；二是真实边界框相对锚框的偏移量，简称偏移量（offset）。在目标检测时，我们首先生成多个锚框，然后为每个锚框预测类别以及偏移量，接着根据预测的偏移量调整锚框位置从而得到预测边界框，最后筛选需要输出的预测边界框。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "YqSRLDpd9lFC"
   },
   "source": [
    "我们知道，在目标检测的训练集中，每个图像已标注了真实边界框的位置以及所含目标的类别。在生成锚框之后，我们主要依据与锚框相似的真实边界框的位置和类别信息为锚框标注。那么，该如何为锚框分配与其相似的真实边界框呢？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "tF6ZRYBW-Nt_"
   },
   "source": [
    "假设图像中锚框分别为 A1,A2,…,Ana ，真实边界框分别为 B1,B2,…,Bnb ，且 na≥nb 。定义矩阵 X∈Rna×nb ，其中第 i 行第 j 列的元素 xij 为锚框 Ai 与真实边界框 Bj 的交并比。 首先，我们找出矩阵 X 中最大元素，并将该元素的行索引与列索引分别记为 i1,j1 。我们为锚框 Ai1 分配真实边界框 Bj1 。显然，锚框 Ai1 和真实边界框 Bj1 在所有的“锚框—真实边界框”的配对中相似度最高。接下来，将矩阵 X 中第 i1 行和第 j1 列上的所有元素丢弃。找出矩阵 X 中剩余的最大元素，并将该元素的行索引与列索引分别记为 i2,j2 。我们为锚框 Ai2 分配真实边界框 Bj2 ，再将矩阵 X 中第 i2 行和第 j2 列上的所有元素丢弃。此时矩阵 X 中已有2行2列的元素被丢弃。 依此类推，直到矩阵 X 中所有 nb 列元素全部被丢弃。这个时候，我们已为 nb 个锚框各分配了一个真实边界框。 接下来，我们只遍历剩余的 na−nb 个锚框：给定其中的锚框 Ai ，根据矩阵 X 的第 i 行找到与 Ai 交并比最大的真实边界框 Bj ，且只有当该交并比大于预先设定的阈值时，才为锚框 Ai 分配真实边界框 Bj 。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "l4mLReC_-oKD"
   },
   "source": [
    "如图9.3（左）所示，假设矩阵 X 中最大值为 x23 ，我们将为锚框 A2 分配真实边界框 B3 。然后，丢弃矩阵中第2行和第3列的所有元素，找出剩余阴影部分的最大元素 x71 ，为锚框 A7 分配真实边界框 B1 。接着如图9.3（中）所示，丢弃矩阵中第7行和第1列的所有元素，找出剩余阴影部分的最大元素 x54 ，为锚框 A5 分配真实边界框 B4 。最后如图9.3（右）所示，丢弃矩阵中第5行和第4列的所有元素，找出剩余阴影部分的最大元素 x92 ，为锚框 A9 分配真实边界框 B2 。之后，我们只需遍历除去 A2,A5,A7,A9 的剩余锚框，并根据阈值判断是否为剩余锚框分配真实边界框。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "_7AUd0YeAxnt"
   },
   "source": [
    "![alt text](https://zh.d2l.ai/_images/anchor-label.svg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "T0eHs5jGBdxs"
   },
   "source": [
    "现在我们可以标注锚框的类别和偏移量了。如果一个锚框 A 被分配了真实边界框 B ，将锚框 A 的类别设为 B 的类别，并根据 B 和 A 的中心坐标的相对位置以及两个框的相对大小为锚框 A 标注偏移量。由于数据集中各个框的位置和大小各异，因此这些相对位置和相对大小通常需要一些特殊变换，才能使偏移量的分布更均匀从而更容易拟合。设锚框 A 及其被分配的真实边界框 B 的中心坐标分别为 (xa,ya) 和 (xb,yb) ， A 和 B 的宽分别为 wa 和 wb ，高分别为 ha 和 hb ，一个常用的技巧是将 A 的偏移量标注为"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "CxExDHHdBgp2"
   },
   "source": [
    "![image.png]()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "EXf9yFMQCLMU"
   },
   "source": [
    "其中常数的默认值为 μx=μy=μw=μh=0,σx=σy=0.1,σw=σh=0.2 。如果一个锚框没有被分配真实边界框，我们只需将该锚框的类别设为背景。类别为背景的锚框通常被称为负类锚框，其余则被称为正类锚框。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "WY08UQQECjlM"
   },
   "source": [
    "下面演示一个具体的例子。我们为读取的图像中的猫和狗定义真实边界框，其中第一个元素为类别（0为狗，1为猫），剩余4个元素分别为左上角的 x 和 y 轴坐标以及右下角的 x 和 y 轴坐标（值域在0到1之间）。这里通过左上角和右下角的坐标构造了5个需要标注的锚框，分别记为 A0,…,A4 （程序中索引从0开始）。先画出这些锚框与真实边界框在图像中的位置。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 248
    },
    "colab_type": "code",
    "id": "FfsE99xPuwKA",
    "outputId": "f4604cef-e6a0-4157-aa70-6ac3fcca18d7"
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n",
       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n",
       "<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n",
       "<svg height=\"170.507701pt\" version=\"1.1\" viewBox=\"0 0 214.1375 170.507701\" width=\"214.1375pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n",
       " <defs>\r\n",
       "  <style type=\"text/css\">\r\n",
       "*{stroke-linecap:butt;stroke-linejoin:round;}\r\n",
       "  </style>\r\n",
       " </defs>\r\n",
       " <g id=\"figure_1\">\r\n",
       "  <g id=\"patch_1\">\r\n",
       "   <path d=\"M 0 170.507701 \r\n",
       "L 214.1375 170.507701 \r\n",
       "L 214.1375 0 \r\n",
       "L 0 0 \r\n",
       "z\r\n",
       "\" style=\"fill:none;\"/>\r\n",
       "  </g>\r\n",
       "  <g id=\"axes_1\">\r\n",
       "   <g id=\"patch_2\">\r\n",
       "    <path d=\"M 33.2875 146.629576 \r\n",
       "L 206.9375 146.629576 \r\n",
       "L 206.9375 10.729576 \r\n",
       "L 33.2875 10.729576 \r\n",
       "z\r\n",
       "\" style=\"fill:#ffffff;\"/>\r\n",
       "   </g>\r\n",
       "   <g clip-path=\"url(#pcaa9b0dbe2)\">\r\n",
       "    <image height=\"136\" id=\"imagee8fe2e3650\" transform=\"scale(1 -1)translate(0 -136)\" width=\"174\" x=\"33.2875\" xlink:href=\"data:image/png;base64,\r\n",
       "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\" y=\"-10.629576\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_3\">\r\n",
       "    <path clip-path=\"url(#pcaa9b0dbe2)\" d=\"M 56.131641 10.999219 \r\n",
       "L 115.172641 10.999219 \r\n",
       "L 115.172641 146.899219 \r\n",
       "L 56.131641 146.899219 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_4\">\r\n",
       "    <path clip-path=\"url(#pcaa9b0dbe2)\" d=\"M 115.172641 31.38422 \r\n",
       "L 179.423132 31.38422 \r\n",
       "L 179.423132 146.899219 \r\n",
       "L 115.172641 146.899219 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_5\">\r\n",
       "    <path clip-path=\"url(#pcaa9b0dbe2)\" d=\"M 33.557143 24.589219 \r\n",
       "L 68.287144 24.589219 \r\n",
       "L 68.287144 51.769222 \r\n",
       "L 33.557143 51.769222 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#0000ff;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_6\">\r\n",
       "    <path clip-path=\"url(#pcaa9b0dbe2)\" d=\"M 59.604645 38.17922 \r\n",
       "L 103.017145 38.17922 \r\n",
       "L 103.017145 65.35922 \r\n",
       "L 59.604645 65.35922 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#008000;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_7\">\r\n",
       "    <path clip-path=\"url(#pcaa9b0dbe2)\" d=\"M 142.956643 17.794219 \r\n",
       "L 186.369135 17.794219 \r\n",
       "L 186.369135 144.181222 \r\n",
       "L 142.956643 144.181222 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#ff0000;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_8\">\r\n",
       "    <path clip-path=\"url(#pcaa9b0dbe2)\" d=\"M 148.166145 72.154215 \r\n",
       "L 172.477146 72.154215 \r\n",
       "L 172.477146 119.719222 \r\n",
       "L 148.166145 119.719222 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#bf00bf;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_9\">\r\n",
       "    <path clip-path=\"url(#pcaa9b0dbe2)\" d=\"M 132.537639 51.769222 \r\n",
       "L 193.315138 51.769222 \r\n",
       "L 193.315138 133.309212 \r\n",
       "L 132.537639 133.309212 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#00bfbf;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"matplotlib.axis_1\">\r\n",
       "    <g id=\"xtick_1\">\r\n",
       "     <g id=\"line2d_1\">\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 0 0 \r\n",
       "L 0 3.5 \r\n",
       "\" id=\"m70e3b547ed\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n",
       "      </defs>\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.557143\" xlink:href=\"#m70e3b547ed\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_1\">\r\n",
       "      <!-- 0 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 31.78125 66.40625 \r\n",
       "Q 24.171875 66.40625 20.328125 58.90625 \r\n",
       "Q 16.5 51.421875 16.5 36.375 \r\n",
       "Q 16.5 21.390625 20.328125 13.890625 \r\n",
       "Q 24.171875 6.390625 31.78125 6.390625 \r\n",
       "Q 39.453125 6.390625 43.28125 13.890625 \r\n",
       "Q 47.125 21.390625 47.125 36.375 \r\n",
       "Q 47.125 51.421875 43.28125 58.90625 \r\n",
       "Q 39.453125 66.40625 31.78125 66.40625 \r\n",
       "z\r\n",
       "M 31.78125 74.21875 \r\n",
       "Q 44.046875 74.21875 50.515625 64.515625 \r\n",
       "Q 56.984375 54.828125 56.984375 36.375 \r\n",
       "Q 56.984375 17.96875 50.515625 8.265625 \r\n",
       "Q 44.046875 -1.421875 31.78125 -1.421875 \r\n",
       "Q 19.53125 -1.421875 13.0625 8.265625 \r\n",
       "Q 6.59375 17.96875 6.59375 36.375 \r\n",
       "Q 6.59375 54.828125 13.0625 64.515625 \r\n",
       "Q 19.53125 74.21875 31.78125 74.21875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-48\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(30.375893 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_2\">\r\n",
       "     <g id=\"line2d_2\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"87.485714\" xlink:href=\"#m70e3b547ed\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_2\">\r\n",
       "      <!-- 100 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 12.40625 8.296875 \r\n",
       "L 28.515625 8.296875 \r\n",
       "L 28.515625 63.921875 \r\n",
       "L 10.984375 60.40625 \r\n",
       "L 10.984375 69.390625 \r\n",
       "L 28.421875 72.90625 \r\n",
       "L 38.28125 72.90625 \r\n",
       "L 38.28125 8.296875 \r\n",
       "L 54.390625 8.296875 \r\n",
       "L 54.390625 0 \r\n",
       "L 12.40625 0 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-49\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(77.941964 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_3\">\r\n",
       "     <g id=\"line2d_3\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"141.414286\" xlink:href=\"#m70e3b547ed\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_3\">\r\n",
       "      <!-- 200 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 19.1875 8.296875 \r\n",
       "L 53.609375 8.296875 \r\n",
       "L 53.609375 0 \r\n",
       "L 7.328125 0 \r\n",
       "L 7.328125 8.296875 \r\n",
       "Q 12.9375 14.109375 22.625 23.890625 \r\n",
       "Q 32.328125 33.6875 34.8125 36.53125 \r\n",
       "Q 39.546875 41.84375 41.421875 45.53125 \r\n",
       "Q 43.3125 49.21875 43.3125 52.78125 \r\n",
       "Q 43.3125 58.59375 39.234375 62.25 \r\n",
       "Q 35.15625 65.921875 28.609375 65.921875 \r\n",
       "Q 23.96875 65.921875 18.8125 64.3125 \r\n",
       "Q 13.671875 62.703125 7.8125 59.421875 \r\n",
       "L 7.8125 69.390625 \r\n",
       "Q 13.765625 71.78125 18.9375 73 \r\n",
       "Q 24.125 74.21875 28.421875 74.21875 \r\n",
       "Q 39.75 74.21875 46.484375 68.546875 \r\n",
       "Q 53.21875 62.890625 53.21875 53.421875 \r\n",
       "Q 53.21875 48.921875 51.53125 44.890625 \r\n",
       "Q 49.859375 40.875 45.40625 35.40625 \r\n",
       "Q 44.1875 33.984375 37.640625 27.21875 \r\n",
       "Q 31.109375 20.453125 19.1875 8.296875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-50\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(131.870536 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_4\">\r\n",
       "     <g id=\"line2d_4\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"195.342857\" xlink:href=\"#m70e3b547ed\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_4\">\r\n",
       "      <!-- 300 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 40.578125 39.3125 \r\n",
       "Q 47.65625 37.796875 51.625 33 \r\n",
       "Q 55.609375 28.21875 55.609375 21.1875 \r\n",
       "Q 55.609375 10.40625 48.1875 4.484375 \r\n",
       "Q 40.765625 -1.421875 27.09375 -1.421875 \r\n",
       "Q 22.515625 -1.421875 17.65625 -0.515625 \r\n",
       "Q 12.796875 0.390625 7.625 2.203125 \r\n",
       "L 7.625 11.71875 \r\n",
       "Q 11.71875 9.328125 16.59375 8.109375 \r\n",
       "Q 21.484375 6.890625 26.8125 6.890625 \r\n",
       "Q 36.078125 6.890625 40.9375 10.546875 \r\n",
       "Q 45.796875 14.203125 45.796875 21.1875 \r\n",
       "Q 45.796875 27.640625 41.28125 31.265625 \r\n",
       "Q 36.765625 34.90625 28.71875 34.90625 \r\n",
       "L 20.21875 34.90625 \r\n",
       "L 20.21875 43.015625 \r\n",
       "L 29.109375 43.015625 \r\n",
       "Q 36.375 43.015625 40.234375 45.921875 \r\n",
       "Q 44.09375 48.828125 44.09375 54.296875 \r\n",
       "Q 44.09375 59.90625 40.109375 62.90625 \r\n",
       "Q 36.140625 65.921875 28.71875 65.921875 \r\n",
       "Q 24.65625 65.921875 20.015625 65.03125 \r\n",
       "Q 15.375 64.15625 9.8125 62.3125 \r\n",
       "L 9.8125 71.09375 \r\n",
       "Q 15.4375 72.65625 20.34375 73.4375 \r\n",
       "Q 25.25 74.21875 29.59375 74.21875 \r\n",
       "Q 40.828125 74.21875 47.359375 69.109375 \r\n",
       "Q 53.90625 64.015625 53.90625 55.328125 \r\n",
       "Q 53.90625 49.265625 50.4375 45.09375 \r\n",
       "Q 46.96875 40.921875 40.578125 39.3125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-51\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(185.799107 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-51\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"matplotlib.axis_2\">\r\n",
       "    <g id=\"ytick_1\">\r\n",
       "     <g id=\"line2d_5\">\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 0 0 \r\n",
       "L -3.5 0 \r\n",
       "\" id=\"m7210e766bf\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n",
       "      </defs>\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m7210e766bf\" y=\"10.999219\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_5\">\r\n",
       "      <!-- 0 -->\r\n",
       "      <g transform=\"translate(19.925 14.798437)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_2\">\r\n",
       "     <g id=\"line2d_6\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m7210e766bf\" y=\"37.963504\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_6\">\r\n",
       "      <!-- 50 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 10.796875 72.90625 \r\n",
       "L 49.515625 72.90625 \r\n",
       "L 49.515625 64.59375 \r\n",
       "L 19.828125 64.59375 \r\n",
       "L 19.828125 46.734375 \r\n",
       "Q 21.96875 47.46875 24.109375 47.828125 \r\n",
       "Q 26.265625 48.1875 28.421875 48.1875 \r\n",
       "Q 40.625 48.1875 47.75 41.5 \r\n",
       "Q 54.890625 34.8125 54.890625 23.390625 \r\n",
       "Q 54.890625 11.625 47.5625 5.09375 \r\n",
       "Q 40.234375 -1.421875 26.90625 -1.421875 \r\n",
       "Q 22.3125 -1.421875 17.546875 -0.640625 \r\n",
       "Q 12.796875 0.140625 7.71875 1.703125 \r\n",
       "L 7.71875 11.625 \r\n",
       "Q 12.109375 9.234375 16.796875 8.0625 \r\n",
       "Q 21.484375 6.890625 26.703125 6.890625 \r\n",
       "Q 35.15625 6.890625 40.078125 11.328125 \r\n",
       "Q 45.015625 15.765625 45.015625 23.390625 \r\n",
       "Q 45.015625 31 40.078125 35.4375 \r\n",
       "Q 35.15625 39.890625 26.703125 39.890625 \r\n",
       "Q 22.75 39.890625 18.8125 39.015625 \r\n",
       "Q 14.890625 38.140625 10.796875 36.28125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-53\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(13.5625 41.762723)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_3\">\r\n",
       "     <g id=\"line2d_7\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m7210e766bf\" y=\"64.92779\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_7\">\r\n",
       "      <!-- 100 -->\r\n",
       "      <g transform=\"translate(7.2 68.727009)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_4\">\r\n",
       "     <g id=\"line2d_8\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m7210e766bf\" y=\"91.892076\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_8\">\r\n",
       "      <!-- 150 -->\r\n",
       "      <g transform=\"translate(7.2 95.691295)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_5\">\r\n",
       "     <g id=\"line2d_9\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m7210e766bf\" y=\"118.856362\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_9\">\r\n",
       "      <!-- 200 -->\r\n",
       "      <g transform=\"translate(7.2 122.65558)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_6\">\r\n",
       "     <g id=\"line2d_10\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m7210e766bf\" y=\"145.820647\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_10\">\r\n",
       "      <!-- 250 -->\r\n",
       "      <g transform=\"translate(7.2 149.619866)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_10\">\r\n",
       "    <path d=\"M 33.2875 146.629576 \r\n",
       "L 33.2875 10.729576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_11\">\r\n",
       "    <path d=\"M 206.9375 146.629576 \r\n",
       "L 206.9375 10.729576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_12\">\r\n",
       "    <path d=\"M 33.2875 146.629576 \r\n",
       "L 206.9375 146.629576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_13\">\r\n",
       "    <path d=\"M 33.2875 10.729576 \r\n",
       "L 206.9375 10.729576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_11\">\r\n",
       "    <g id=\"patch_14\">\r\n",
       "     <path d=\"M 46.466954 17.922656 \r\n",
       "L 65.796329 17.922656 \r\n",
       "L 65.796329 4.075781 \r\n",
       "L 46.466954 4.075781 \r\n",
       "z\r\n",
       "\"/>\r\n",
       "    </g>\r\n",
       "    <!-- dog -->\r\n",
       "    <defs>\r\n",
       "     <path d=\"M 45.40625 46.390625 \r\n",
       "L 45.40625 75.984375 \r\n",
       "L 54.390625 75.984375 \r\n",
       "L 54.390625 0 \r\n",
       "L 45.40625 0 \r\n",
       "L 45.40625 8.203125 \r\n",
       "Q 42.578125 3.328125 38.25 0.953125 \r\n",
       "Q 33.9375 -1.421875 27.875 -1.421875 \r\n",
       "Q 17.96875 -1.421875 11.734375 6.484375 \r\n",
       "Q 5.515625 14.40625 5.515625 27.296875 \r\n",
       "Q 5.515625 40.1875 11.734375 48.09375 \r\n",
       "Q 17.96875 56 27.875 56 \r\n",
       "Q 33.9375 56 38.25 53.625 \r\n",
       "Q 42.578125 51.265625 45.40625 46.390625 \r\n",
       "z\r\n",
       "M 14.796875 27.296875 \r\n",
       "Q 14.796875 17.390625 18.875 11.75 \r\n",
       "Q 22.953125 6.109375 30.078125 6.109375 \r\n",
       "Q 37.203125 6.109375 41.296875 11.75 \r\n",
       "Q 45.40625 17.390625 45.40625 27.296875 \r\n",
       "Q 45.40625 37.203125 41.296875 42.84375 \r\n",
       "Q 37.203125 48.484375 30.078125 48.484375 \r\n",
       "Q 22.953125 48.484375 18.875 42.84375 \r\n",
       "Q 14.796875 37.203125 14.796875 27.296875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-100\"/>\r\n",
       "     <path d=\"M 30.609375 48.390625 \r\n",
       "Q 23.390625 48.390625 19.1875 42.75 \r\n",
       "Q 14.984375 37.109375 14.984375 27.296875 \r\n",
       "Q 14.984375 17.484375 19.15625 11.84375 \r\n",
       "Q 23.34375 6.203125 30.609375 6.203125 \r\n",
       "Q 37.796875 6.203125 41.984375 11.859375 \r\n",
       "Q 46.1875 17.53125 46.1875 27.296875 \r\n",
       "Q 46.1875 37.015625 41.984375 42.703125 \r\n",
       "Q 37.796875 48.390625 30.609375 48.390625 \r\n",
       "z\r\n",
       "M 30.609375 56 \r\n",
       "Q 42.328125 56 49.015625 48.375 \r\n",
       "Q 55.71875 40.765625 55.71875 27.296875 \r\n",
       "Q 55.71875 13.875 49.015625 6.21875 \r\n",
       "Q 42.328125 -1.421875 30.609375 -1.421875 \r\n",
       "Q 18.84375 -1.421875 12.171875 6.21875 \r\n",
       "Q 5.515625 13.875 5.515625 27.296875 \r\n",
       "Q 5.515625 40.765625 12.171875 48.375 \r\n",
       "Q 18.84375 56 30.609375 56 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-111\"/>\r\n",
       "     <path d=\"M 45.40625 27.984375 \r\n",
       "Q 45.40625 37.75 41.375 43.109375 \r\n",
       "Q 37.359375 48.484375 30.078125 48.484375 \r\n",
       "Q 22.859375 48.484375 18.828125 43.109375 \r\n",
       "Q 14.796875 37.75 14.796875 27.984375 \r\n",
       "Q 14.796875 18.265625 18.828125 12.890625 \r\n",
       "Q 22.859375 7.515625 30.078125 7.515625 \r\n",
       "Q 37.359375 7.515625 41.375 12.890625 \r\n",
       "Q 45.40625 18.265625 45.40625 27.984375 \r\n",
       "z\r\n",
       "M 54.390625 6.78125 \r\n",
       "Q 54.390625 -7.171875 48.1875 -13.984375 \r\n",
       "Q 42 -20.796875 29.203125 -20.796875 \r\n",
       "Q 24.46875 -20.796875 20.265625 -20.09375 \r\n",
       "Q 16.0625 -19.390625 12.109375 -17.921875 \r\n",
       "L 12.109375 -9.1875 \r\n",
       "Q 16.0625 -11.328125 19.921875 -12.34375 \r\n",
       "Q 23.78125 -13.375 27.78125 -13.375 \r\n",
       "Q 36.625 -13.375 41.015625 -8.765625 \r\n",
       "Q 45.40625 -4.15625 45.40625 5.171875 \r\n",
       "L 45.40625 9.625 \r\n",
       "Q 42.625 4.78125 38.28125 2.390625 \r\n",
       "Q 33.9375 0 27.875 0 \r\n",
       "Q 17.828125 0 11.671875 7.65625 \r\n",
       "Q 5.515625 15.328125 5.515625 27.984375 \r\n",
       "Q 5.515625 40.671875 11.671875 48.328125 \r\n",
       "Q 17.828125 56 27.875 56 \r\n",
       "Q 33.9375 56 38.28125 53.609375 \r\n",
       "Q 42.625 51.21875 45.40625 46.390625 \r\n",
       "L 45.40625 54.6875 \r\n",
       "L 54.390625 54.6875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-103\"/>\r\n",
       "    </defs>\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(50.486954 12.654844)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-100\"/>\r\n",
       "     <use x=\"63.476562\" xlink:href=\"#DejaVuSans-111\"/>\r\n",
       "     <use x=\"124.658203\" xlink:href=\"#DejaVuSans-103\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_12\">\r\n",
       "    <g id=\"patch_15\">\r\n",
       "     <path d=\"M 106.488578 38.307658 \r\n",
       "L 123.856703 38.307658 \r\n",
       "L 123.856703 24.460783 \r\n",
       "L 106.488578 24.460783 \r\n",
       "z\r\n",
       "\"/>\r\n",
       "    </g>\r\n",
       "    <!-- cat -->\r\n",
       "    <defs>\r\n",
       "     <path d=\"M 48.78125 52.59375 \r\n",
       "L 48.78125 44.1875 \r\n",
       "Q 44.96875 46.296875 41.140625 47.34375 \r\n",
       "Q 37.3125 48.390625 33.40625 48.390625 \r\n",
       "Q 24.65625 48.390625 19.8125 42.84375 \r\n",
       "Q 14.984375 37.3125 14.984375 27.296875 \r\n",
       "Q 14.984375 17.28125 19.8125 11.734375 \r\n",
       "Q 24.65625 6.203125 33.40625 6.203125 \r\n",
       "Q 37.3125 6.203125 41.140625 7.25 \r\n",
       "Q 44.96875 8.296875 48.78125 10.40625 \r\n",
       "L 48.78125 2.09375 \r\n",
       "Q 45.015625 0.34375 40.984375 -0.53125 \r\n",
       "Q 36.96875 -1.421875 32.421875 -1.421875 \r\n",
       "Q 20.0625 -1.421875 12.78125 6.34375 \r\n",
       "Q 5.515625 14.109375 5.515625 27.296875 \r\n",
       "Q 5.515625 40.671875 12.859375 48.328125 \r\n",
       "Q 20.21875 56 33.015625 56 \r\n",
       "Q 37.15625 56 41.109375 55.140625 \r\n",
       "Q 45.0625 54.296875 48.78125 52.59375 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-99\"/>\r\n",
       "     <path d=\"M 34.28125 27.484375 \r\n",
       "Q 23.390625 27.484375 19.1875 25 \r\n",
       "Q 14.984375 22.515625 14.984375 16.5 \r\n",
       "Q 14.984375 11.71875 18.140625 8.90625 \r\n",
       "Q 21.296875 6.109375 26.703125 6.109375 \r\n",
       "Q 34.1875 6.109375 38.703125 11.40625 \r\n",
       "Q 43.21875 16.703125 43.21875 25.484375 \r\n",
       "L 43.21875 27.484375 \r\n",
       "z\r\n",
       "M 52.203125 31.203125 \r\n",
       "L 52.203125 0 \r\n",
       "L 43.21875 0 \r\n",
       "L 43.21875 8.296875 \r\n",
       "Q 40.140625 3.328125 35.546875 0.953125 \r\n",
       "Q 30.953125 -1.421875 24.3125 -1.421875 \r\n",
       "Q 15.921875 -1.421875 10.953125 3.296875 \r\n",
       "Q 6 8.015625 6 15.921875 \r\n",
       "Q 6 25.140625 12.171875 29.828125 \r\n",
       "Q 18.359375 34.515625 30.609375 34.515625 \r\n",
       "L 43.21875 34.515625 \r\n",
       "L 43.21875 35.40625 \r\n",
       "Q 43.21875 41.609375 39.140625 45 \r\n",
       "Q 35.0625 48.390625 27.6875 48.390625 \r\n",
       "Q 23 48.390625 18.546875 47.265625 \r\n",
       "Q 14.109375 46.140625 10.015625 43.890625 \r\n",
       "L 10.015625 52.203125 \r\n",
       "Q 14.9375 54.109375 19.578125 55.046875 \r\n",
       "Q 24.21875 56 28.609375 56 \r\n",
       "Q 40.484375 56 46.34375 49.84375 \r\n",
       "Q 52.203125 43.703125 52.203125 31.203125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-97\"/>\r\n",
       "     <path d=\"M 18.3125 70.21875 \r\n",
       "L 18.3125 54.6875 \r\n",
       "L 36.8125 54.6875 \r\n",
       "L 36.8125 47.703125 \r\n",
       "L 18.3125 47.703125 \r\n",
       "L 18.3125 18.015625 \r\n",
       "Q 18.3125 11.328125 20.140625 9.421875 \r\n",
       "Q 21.96875 7.515625 27.59375 7.515625 \r\n",
       "L 36.8125 7.515625 \r\n",
       "L 36.8125 0 \r\n",
       "L 27.59375 0 \r\n",
       "Q 17.1875 0 13.234375 3.875 \r\n",
       "Q 9.28125 7.765625 9.28125 18.015625 \r\n",
       "L 9.28125 47.703125 \r\n",
       "L 2.6875 47.703125 \r\n",
       "L 2.6875 54.6875 \r\n",
       "L 9.28125 54.6875 \r\n",
       "L 9.28125 70.21875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-116\"/>\r\n",
       "    </defs>\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(110.508578 33.039845)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-99\"/>\r\n",
       "     <use x=\"54.980469\" xlink:href=\"#DejaVuSans-97\"/>\r\n",
       "     <use x=\"116.259766\" xlink:href=\"#DejaVuSans-116\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_13\">\r\n",
       "    <g id=\"patch_16\">\r\n",
       "     <path d=\"M 27.628393 31.512657 \r\n",
       "L 39.485893 31.512657 \r\n",
       "L 39.485893 17.665782 \r\n",
       "L 27.628393 17.665782 \r\n",
       "z\r\n",
       "\" style=\"fill:#0000ff;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- 0 -->\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(31.648393 26.244844)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_14\">\r\n",
       "    <g id=\"patch_17\">\r\n",
       "     <path d=\"M 53.675895 45.102657 \r\n",
       "L 65.533395 45.102657 \r\n",
       "L 65.533395 31.255782 \r\n",
       "L 53.675895 31.255782 \r\n",
       "z\r\n",
       "\" style=\"fill:#008000;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- 1 -->\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(57.695895 39.834845)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_15\">\r\n",
       "    <g id=\"patch_18\">\r\n",
       "     <path d=\"M 137.027893 24.717656 \r\n",
       "L 148.885393 24.717656 \r\n",
       "L 148.885393 10.870781 \r\n",
       "L 137.027893 10.870781 \r\n",
       "z\r\n",
       "\" style=\"fill:#ff0000;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- 2 -->\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(141.047893 19.449844)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_16\">\r\n",
       "    <g id=\"patch_19\">\r\n",
       "     <path d=\"M 142.237395 79.077653 \r\n",
       "L 154.094895 79.077653 \r\n",
       "L 154.094895 65.230778 \r\n",
       "L 142.237395 65.230778 \r\n",
       "z\r\n",
       "\" style=\"fill:#bf00bf;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- 3 -->\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(146.257395 73.80984)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-51\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_17\">\r\n",
       "    <g id=\"patch_20\">\r\n",
       "     <path d=\"M 126.608889 58.69266 \r\n",
       "L 138.466389 58.69266 \r\n",
       "L 138.466389 44.845785 \r\n",
       "L 126.608889 44.845785 \r\n",
       "z\r\n",
       "\" style=\"fill:#00bfbf;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- 4 -->\r\n",
       "    <defs>\r\n",
       "     <path d=\"M 37.796875 64.3125 \r\n",
       "L 12.890625 25.390625 \r\n",
       "L 37.796875 25.390625 \r\n",
       "z\r\n",
       "M 35.203125 72.90625 \r\n",
       "L 47.609375 72.90625 \r\n",
       "L 47.609375 25.390625 \r\n",
       "L 58.015625 25.390625 \r\n",
       "L 58.015625 17.1875 \r\n",
       "L 47.609375 17.1875 \r\n",
       "L 47.609375 0 \r\n",
       "L 37.796875 0 \r\n",
       "L 37.796875 17.1875 \r\n",
       "L 4.890625 17.1875 \r\n",
       "L 4.890625 26.703125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-52\"/>\r\n",
       "    </defs>\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(130.628889 53.424847)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-52\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "  </g>\r\n",
       " </g>\r\n",
       " <defs>\r\n",
       "  <clipPath id=\"pcaa9b0dbe2\">\r\n",
       "   <rect height=\"135.9\" width=\"173.65\" x=\"33.2875\" y=\"10.729576\"/>\r\n",
       "  </clipPath>\r\n",
       " </defs>\r\n",
       "</svg>\r\n"
      ],
      "text/plain": [
       "<Figure size 252x180 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "bbox_scale = tf.constant([[w,h,w,h]], dtype=tf.float32)\n",
    "ground_truth = tf.constant([[0, 0.13, 0, 0.47, 1],\n",
    "                [1, 0.47, 0.15, 0.84, 1]])\n",
    "anchors = tf.constant([[0, 0.1, 0.2, 0.3],\n",
    "            [0.15, 0.2, 0.4, 0.4],\n",
    "            [0.63, 0.05, 0.88, 0.98],\n",
    "            [0.66, 0.45, 0.8, 0.8],\n",
    "            [0.57, 0.3,  0.92, 0.9]])\n",
    "\n",
    "fig = plt.imshow(img)\n",
    "show_bboxes(fig.axes, tf.multiply(ground_truth[:, 1:], bbox_scale),\n",
    "        ['dog', 'cat'], 'k')\n",
    "show_bboxes(fig.axes, tf.multiply(anchors, bbox_scale),\n",
    "        ['0', '1', '2', '3', '4'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "T0uLoNwBFy-U"
   },
   "source": [
    "下面实现MultiBoxTarget函数来为锚框标注类别和偏移量。该函数将背景类别设为0，并令从零开始的目标类别的整数索引自加1（1为狗，2为猫）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "xh0VeVbrE55U"
   },
   "outputs": [],
   "source": [
    "def assign_anchor(bb, anchor, jaccard_threshold=0.5):\n",
    "    \"\"\"\n",
    "    # 按照「9.4.1. 生成多个锚框」图9.3所讲为每个anchor分配真实的bb, anchor表示成归一化(xmin, ymin, xmax, ymax).\n",
    "    https://zh.d2l.ai/chapter_computer-vision/anchor.html\n",
    "    Args:\n",
    "        bb: 真实边界框(bounding box), shape:（nb, 4）\n",
    "        anchor: 待分配的anchor, shape:（na, 4）\n",
    "        jaccard_threshold: 预先设定的阈值\n",
    "    Returns:\n",
    "        assigned_idx: shape: (na, ), 每个anchor分配的真实bb对应的索引, 若未分配任何bb则为-1\n",
    "    \"\"\"\n",
    "    na = anchor.shape[0]\n",
    "    nb = bb.shape[0]\n",
    "    jaccard = compute_jaccard(anchor, bb).numpy()   # shape: (na, nb)\n",
    "    assigned_idx = np.ones(na) * -1 # 初始全为-1\n",
    "\n",
    "    # 先为每个bb分配一个anchor（不要求满足jaccard_threshold）\n",
    "    jaccard_cp = jaccard.copy()\n",
    "    for j in range(nb):\n",
    "        i = np.argmax(jaccard_cp[:, j])\n",
    "        assigned_idx[i] = j\n",
    "        jaccard_cp[i, :] = float(\"-inf\")    # 赋值为负无穷, 相当于去掉这一行\n",
    "    \n",
    "    # 处理还未被分配的anchor， 要求满足jaccard_threshold\n",
    "    for i in range(na):\n",
    "        if assigned_idx[i] == -1:\n",
    "            j = np.argmax(jaccard[i, :])\n",
    "            if jaccard[i, j] >= jaccard_threshold:\n",
    "                assigned_idx[i] = j\n",
    "    return tf.cast(assigned_idx, tf.int32)\n",
    "\n",
    "def xy_to_cxcy(xy):\n",
    "    \"\"\"\n",
    "    将(x_min, y_min, x_max, y_max)形式的anchor转换成(center_x, center_y, w, h)形式的.\n",
    "    https://github.com/sgrvinod/a-PyTorch-Tutorial-to-Object-Detection/blob/master/utils.py\n",
    "    Args:\n",
    "        xy: bounding boxes in boundary coordinates, a tensor of size (n_boxes, 4)\n",
    "    Returns: \n",
    "        bounding boxes in center-size coordinates, a tensor of size (n_boxes, 4)\n",
    "    \"\"\"\n",
    "    return tf.concat(((xy[:, 2:] + xy[:, :2]) / 2,  #c_x, c_y\n",
    "              xy[:, 2:] - xy[:, :2]), axis=1)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "dYEtNV-_RHqG"
   },
   "outputs": [],
   "source": [
    "def MultiBoxTarget(anchor, label):\n",
    "    \"\"\"\n",
    "    # 按照「9.4.1. 生成多个锚框」所讲的实现, anchor表示成归一化(xmin, ymin, xmax, ymax).\n",
    "    https://zh.d2l.ai/chapter_computer-vision/anchor.html\n",
    "    Args:\n",
    "        anchor: torch tensor, 输入的锚框, 一般是通过MultiBoxPrior生成, shape:（1，锚框总数，4）\n",
    "        label: 真实标签, shape为(bn, 每张图片最多的真实锚框数, 5)\n",
    "               第二维中，如果给定图片没有这么多锚框, 可以先用-1填充空白, 最后一维中的元素为[类别标签, 四个坐标值]\n",
    "    Returns:\n",
    "        列表, [bbox_offset, bbox_mask, cls_labels]\n",
    "        bbox_offset: 每个锚框的标注偏移量，形状为(bn，锚框总数*4)\n",
    "        bbox_mask: 形状同bbox_offset, 每个锚框的掩码, 一一对应上面的偏移量, 负类锚框(背景)对应的掩码均为0, 正类锚框的掩码均为1\n",
    "        cls_labels: 每个锚框的标注类别, 其中0表示为背景, 形状为(bn，锚框总数)\n",
    "    \"\"\"\n",
    "    assert len(anchor.shape) == 3 and len(label.shape) == 3\n",
    "    bn = label.shape[0]\n",
    "\n",
    "    def MultiBoxTarget_one(anchor, label, eps=1e-6):\n",
    "        \"\"\"\n",
    "        MultiBoxTarget函数的辅助函数, 处理batch中的一个\n",
    "        Args:\n",
    "            anchor: shape of (锚框总数, 4)\n",
    "            label: shape of (真实锚框数, 5), 5代表[类别标签, 四个坐标值]\n",
    "            eps: 一个极小值, 防止log0\n",
    "        Returns:\n",
    "            offset: (锚框总数*4, )\n",
    "            bbox_mask: (锚框总数*4, ), 0代表背景, 1代表非背景\n",
    "            cls_labels: (锚框总数, 4), 0代表背景\n",
    "        \"\"\"\n",
    "        an = anchor.shape[0]\n",
    "        assigned_idx = assign_anchor(label[:, 1:], anchor) ## (锚框总数, )\n",
    "        # 决定anchor留下或者舍去\n",
    "        bbox_mask = tf.repeat(tf.expand_dims(tf.cast((assigned_idx >= 0), dtype=tf.double), axis=-1), repeats=4, axis=1)\n",
    "\n",
    "        cls_labels = np.zeros(an, dtype=int) # 0表示背景\n",
    "        assigned_bb = np.zeros((an, 4), dtype=float) # 所有anchor对应的bb坐标\n",
    "        for i in range(an):\n",
    "            bb_idx = assigned_idx[i]\n",
    "            if bb_idx >= 0: # 即非背景\n",
    "                cls_labels[i] = label.numpy()[bb_idx, 0] + 1 # 要注意加1\n",
    "                assigned_bb[i, :] = label.numpy()[bb_idx, 1:]\n",
    "        \n",
    "        center_anchor = tf.cast(xy_to_cxcy(anchor), dtype=tf.double)  # (center_x, center_y, w, h)\n",
    "        center_assigned_bb = tf.cast(xy_to_cxcy(assigned_bb), dtype=tf.double) # (center_x, center_y, w, h)\n",
    "\n",
    "        offset_xy = 10.0 * (center_assigned_bb[:,:2] - center_anchor[:,:2]) / center_anchor[:,2:]\n",
    "        offset_wh = 5.0 * tf.math.log(eps + center_assigned_bb[:, 2:] / center_anchor[:, 2:])\n",
    "        offset = tf.multiply(tf.concat((offset_xy, offset_wh), axis=1), bbox_mask)    # (锚框总数, 4)\n",
    "\n",
    "        return tf.reshape(offset, (-1,)), tf.reshape(bbox_mask, (-1,)), cls_labels\n",
    "    \n",
    "    batch_offset = []\n",
    "    batch_mask = []\n",
    "    batch_cls_labels = []\n",
    "    for b in range(bn):\n",
    "        offset, bbox_mask, cls_labels = MultiBoxTarget_one(anchor[0, :, :], label[b,:,:])\n",
    "\n",
    "        batch_offset.append(offset)\n",
    "        batch_mask.append(bbox_mask)\n",
    "        batch_cls_labels.append(cls_labels)\n",
    "    \n",
    "    batch_offset = tf.convert_to_tensor(batch_offset)\n",
    "    batch_mask = tf.convert_to_tensor(batch_mask)\n",
    "    batch_cls_labels = tf.convert_to_tensor(batch_cls_labels)\n",
    "\n",
    "    return [batch_offset, batch_mask, batch_cls_labels]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "pa-n6LOnEmJB"
   },
   "source": [
    "我们通过tf.expand_dims函数为锚框和真实边界框添加样本维。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "a25VjWQeEnsT"
   },
   "outputs": [],
   "source": [
    "labels = MultiBoxTarget(tf.expand_dims(anchors, axis=0), \n",
    "            tf.expand_dims(ground_truth, axis=0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "4XwJSG5XP98W",
    "outputId": "fe5579ac-f400-4a11-be5d-15d37313e287"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(1, 5), dtype=int32, numpy=array([[0, 1, 2, 0, 0]])>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels[2]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "BMujCUeJTByB"
   },
   "source": [
    "我们根据锚框与真实边界框在图像中的位置来分析这些标注的类别。首先，在所有的“锚框—真实边界框”的配对中，锚框 A4 与猫的真实边界框的交并比最大，因此锚框 A4 的类别标注为猫。不考虑锚框 A4 或猫的真实边界框，在剩余的“锚框—真实边界框”的配对中，最大交并比的配对为锚框 A1 和狗的真实边界框，因此锚框 A1 的类别标注为狗。接下来遍历未标注的剩余3个锚框：与锚框 A0 交并比最大的真实边界框的类别为狗，但交并比小于阈值（默认为0.5），因此类别标注为背景；与锚框 A2 交并比最大的真实边界框的类别为猫，且交并比大于阈值，因此类别标注为猫；与锚框 A3 交并比最大的真实边界框的类别为猫，但交并比小于阈值，因此类别标注为背景。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "gh51YuJ8TXo8"
   },
   "source": [
    "返回值的第二项为掩码（mask）变量，形状为(批量大小, 锚框个数的四倍)。掩码变量中的元素与每个锚框的4个偏移量一一对应。 由于我们不关心对背景的检测，有关负类的偏移量不应影响目标函数。通过按元素乘法，掩码变量中的0可以在计算目标函数之前过滤掉负类的偏移量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 67
    },
    "colab_type": "code",
    "id": "cYFtJIOVQAve",
    "outputId": "71811a57-33c9-4102-ab48-696406de040d"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(1, 20), dtype=float64, numpy=\n",
       "array([[0., 0., 0., 0., 1., 1., 1., 1., 1., 1., 1., 1., 0., 0., 0., 0.,\n",
       "        0., 0., 0., 0.]])>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ViXHXSS8T_a1"
   },
   "source": [
    "返回的第一项是为每个锚框标注的四个偏移量，其中负类锚框的偏移量标注为0。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 101
    },
    "colab_type": "code",
    "id": "XHnpDo_MT26S",
    "outputId": "d5c3ea0e-2e45-4bc6-9501-b70ad4aeddea"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(1, 20), dtype=float64, numpy=\n",
       "array([[-0.        , -0.        , -0.        , -0.        ,  0.99999964,\n",
       "         9.99999925,  1.53742723,  8.04719049, -4.00000036,  0.64516147,\n",
       "         1.96021348, -0.44973579, -0.        , -0.        , -0.        ,\n",
       "        -0.        , -0.        , -0.        , -0.        , -0.        ]])>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "vl4RsV-9VGhu"
   },
   "source": [
    "## 9.4.4. 输出预测边界框"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "lOpnFmxVbHrp"
   },
   "source": [
    "在模型预测阶段，我们先为图像生成多个锚框，并为这些锚框一一预测类别和偏移量。随后，我们根据锚框及其预测偏移量得到预测边界框。当锚框数量较多时，同一个目标上可能会输出较多相似的预测边界框。为了使结果更加简洁，我们可以移除相似的预测边界框。常用的方法叫作非极大值抑制（non-maximum suppression，NMS）。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "jiNMAbo_nKft"
   },
   "source": [
    "我们来描述一下非极大值抑制的工作原理。对于一个预测边界框 B ，模型会计算各个类别的预测概率。设其中最大的预测概率为 p ，该概率所对应的类别即 B 的预测类别。我们也将 p 称为预测边界框 B 的置信度。在同一图像上，我们将预测类别非背景的预测边界框按置信度从高到低排序，得到列表 L 。从 L 中选取置信度最高的预测边界框 B1 作为基准，将所有与 B1 的交并比大于某阈值的非基准预测边界框从 L 中移除。这里的阈值是预先设定的超参数。此时， L 保留了置信度最高的预测边界框并移除了与其相似的其他预测边界框。 接下来，从 L 中选取置信度第二高的预测边界框 B2 作为基准，将所有与 B2 的交并比大于某阈值的非基准预测边界框从 L 中移除。重复这一过程，直到 L 中所有的预测边界框都曾作为基准。此时 L 中任意一对预测边界框的交并比都小于阈值。最终，输出列表 L 中的所有预测边界框。\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "BXNLbK8woIIE"
   },
   "source": [
    "下面来看一个具体的例子。先构造4个锚框。简单起见，我们假设预测偏移量全是0：预测边界框即锚框。最后，我们构造每个类别的预测概率。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 218
    },
    "colab_type": "code",
    "id": "v_kqdugQUBfq",
    "outputId": "56ba2f33-8366-486e-9b73-b19c344e1b76"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<tf.Tensor: shape=(4, 4), dtype=float32, numpy=\n",
       " array([[0.1 , 0.08, 0.52, 0.92],\n",
       "        [0.08, 0.2 , 0.56, 0.95],\n",
       "        [0.  , 0.3 , 0.62, 0.91],\n",
       "        [0.55, 0.2 , 0.9 , 0.88]], dtype=float32)>,\n",
       " <tf.Tensor: shape=(16,), dtype=float32, numpy=\n",
       " array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       dtype=float32)>,\n",
       " <tf.Tensor: shape=(3, 4), dtype=float32, numpy=\n",
       " array([[0. , 0. , 0. , 0. ],\n",
       "        [0.9, 0.8, 0.7, 0.1],\n",
       "        [0.1, 0.2, 0.3, 0.9]], dtype=float32)>)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "anchors = tf.convert_to_tensor([[0.1, 0.08, 0.52, 0.92],\n",
    "                [0.08, 0.2, 0.56, 0.95],\n",
    "                [0/15, 0.3, 0.62, 0.91],\n",
    "                [0.55, 0.2, 0.9, 0.88]])\n",
    "offset_preds = tf.convert_to_tensor([0.0] * (4 * len(anchors)))\n",
    "cls_probs = tf.convert_to_tensor([[0., 0., 0., 0.], # 背景的预测概率\n",
    "                [0.9, 0.8, 0.7, 0.1],    # 狗的预测概率\n",
    "                [0.1, 0.2, 0.3, 0.9]])   # 猫的预测概率\n",
    "anchors, offset_preds, cls_probs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Idi0YNm7t_Hc"
   },
   "source": [
    "在图像上打印预测边界框和它们的置信度。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 248
    },
    "colab_type": "code",
    "id": "jUqFp466p5_4",
    "outputId": "13deb5c0-ba3b-444e-e012-5732d9a461cc"
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n",
       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n",
       "<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n",
       "<svg height=\"170.507701pt\" version=\"1.1\" viewBox=\"0 0 214.1375 170.507701\" width=\"214.1375pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n",
       " <defs>\r\n",
       "  <style type=\"text/css\">\r\n",
       "*{stroke-linecap:butt;stroke-linejoin:round;}\r\n",
       "  </style>\r\n",
       " </defs>\r\n",
       " <g id=\"figure_1\">\r\n",
       "  <g id=\"patch_1\">\r\n",
       "   <path d=\"M 0 170.507701 \r\n",
       "L 214.1375 170.507701 \r\n",
       "L 214.1375 0 \r\n",
       "L 0 0 \r\n",
       "z\r\n",
       "\" style=\"fill:none;\"/>\r\n",
       "  </g>\r\n",
       "  <g id=\"axes_1\">\r\n",
       "   <g id=\"patch_2\">\r\n",
       "    <path d=\"M 33.2875 146.629576 \r\n",
       "L 206.9375 146.629576 \r\n",
       "L 206.9375 10.729576 \r\n",
       "L 33.2875 10.729576 \r\n",
       "z\r\n",
       "\" style=\"fill:#ffffff;\"/>\r\n",
       "   </g>\r\n",
       "   <g clip-path=\"url(#p517054fee5)\">\r\n",
       "    <image height=\"136\" id=\"image5a5879eb7e\" transform=\"scale(1 -1)translate(0 -136)\" width=\"174\" x=\"33.2875\" xlink:href=\"data:image/png;base64,\r\n",
       "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\" y=\"-10.629576\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_3\">\r\n",
       "    <path clip-path=\"url(#p517054fee5)\" d=\"M 50.922143 21.871219 \r\n",
       "L 123.855136 21.871219 \r\n",
       "L 123.855136 136.027225 \r\n",
       "L 50.922143 136.027225 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#0000ff;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_4\">\r\n",
       "    <path clip-path=\"url(#p517054fee5)\" d=\"M 47.449143 38.17922 \r\n",
       "L 130.801147 38.17922 \r\n",
       "L 130.801147 140.104215 \r\n",
       "L 47.449143 140.104215 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#008000;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_5\">\r\n",
       "    <path clip-path=\"url(#p517054fee5)\" d=\"M 33.557143 51.769222 \r\n",
       "L 141.220143 51.769222 \r\n",
       "L 141.220143 134.668223 \r\n",
       "L 33.557143 134.668223 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#ff0000;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_6\">\r\n",
       "    <path clip-path=\"url(#p517054fee5)\" d=\"M 129.064646 38.17922 \r\n",
       "L 189.842136 38.17922 \r\n",
       "L 189.842136 130.591208 \r\n",
       "L 129.064646 130.591208 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#bf00bf;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"matplotlib.axis_1\">\r\n",
       "    <g id=\"xtick_1\">\r\n",
       "     <g id=\"line2d_1\">\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 0 0 \r\n",
       "L 0 3.5 \r\n",
       "\" id=\"mf080f7ffe6\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n",
       "      </defs>\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.557143\" xlink:href=\"#mf080f7ffe6\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_1\">\r\n",
       "      <!-- 0 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 31.78125 66.40625 \r\n",
       "Q 24.171875 66.40625 20.328125 58.90625 \r\n",
       "Q 16.5 51.421875 16.5 36.375 \r\n",
       "Q 16.5 21.390625 20.328125 13.890625 \r\n",
       "Q 24.171875 6.390625 31.78125 6.390625 \r\n",
       "Q 39.453125 6.390625 43.28125 13.890625 \r\n",
       "Q 47.125 21.390625 47.125 36.375 \r\n",
       "Q 47.125 51.421875 43.28125 58.90625 \r\n",
       "Q 39.453125 66.40625 31.78125 66.40625 \r\n",
       "z\r\n",
       "M 31.78125 74.21875 \r\n",
       "Q 44.046875 74.21875 50.515625 64.515625 \r\n",
       "Q 56.984375 54.828125 56.984375 36.375 \r\n",
       "Q 56.984375 17.96875 50.515625 8.265625 \r\n",
       "Q 44.046875 -1.421875 31.78125 -1.421875 \r\n",
       "Q 19.53125 -1.421875 13.0625 8.265625 \r\n",
       "Q 6.59375 17.96875 6.59375 36.375 \r\n",
       "Q 6.59375 54.828125 13.0625 64.515625 \r\n",
       "Q 19.53125 74.21875 31.78125 74.21875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-48\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(30.375893 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_2\">\r\n",
       "     <g id=\"line2d_2\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"87.485714\" xlink:href=\"#mf080f7ffe6\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_2\">\r\n",
       "      <!-- 100 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 12.40625 8.296875 \r\n",
       "L 28.515625 8.296875 \r\n",
       "L 28.515625 63.921875 \r\n",
       "L 10.984375 60.40625 \r\n",
       "L 10.984375 69.390625 \r\n",
       "L 28.421875 72.90625 \r\n",
       "L 38.28125 72.90625 \r\n",
       "L 38.28125 8.296875 \r\n",
       "L 54.390625 8.296875 \r\n",
       "L 54.390625 0 \r\n",
       "L 12.40625 0 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-49\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(77.941964 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_3\">\r\n",
       "     <g id=\"line2d_3\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"141.414286\" xlink:href=\"#mf080f7ffe6\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_3\">\r\n",
       "      <!-- 200 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 19.1875 8.296875 \r\n",
       "L 53.609375 8.296875 \r\n",
       "L 53.609375 0 \r\n",
       "L 7.328125 0 \r\n",
       "L 7.328125 8.296875 \r\n",
       "Q 12.9375 14.109375 22.625 23.890625 \r\n",
       "Q 32.328125 33.6875 34.8125 36.53125 \r\n",
       "Q 39.546875 41.84375 41.421875 45.53125 \r\n",
       "Q 43.3125 49.21875 43.3125 52.78125 \r\n",
       "Q 43.3125 58.59375 39.234375 62.25 \r\n",
       "Q 35.15625 65.921875 28.609375 65.921875 \r\n",
       "Q 23.96875 65.921875 18.8125 64.3125 \r\n",
       "Q 13.671875 62.703125 7.8125 59.421875 \r\n",
       "L 7.8125 69.390625 \r\n",
       "Q 13.765625 71.78125 18.9375 73 \r\n",
       "Q 24.125 74.21875 28.421875 74.21875 \r\n",
       "Q 39.75 74.21875 46.484375 68.546875 \r\n",
       "Q 53.21875 62.890625 53.21875 53.421875 \r\n",
       "Q 53.21875 48.921875 51.53125 44.890625 \r\n",
       "Q 49.859375 40.875 45.40625 35.40625 \r\n",
       "Q 44.1875 33.984375 37.640625 27.21875 \r\n",
       "Q 31.109375 20.453125 19.1875 8.296875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-50\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(131.870536 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_4\">\r\n",
       "     <g id=\"line2d_4\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"195.342857\" xlink:href=\"#mf080f7ffe6\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_4\">\r\n",
       "      <!-- 300 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 40.578125 39.3125 \r\n",
       "Q 47.65625 37.796875 51.625 33 \r\n",
       "Q 55.609375 28.21875 55.609375 21.1875 \r\n",
       "Q 55.609375 10.40625 48.1875 4.484375 \r\n",
       "Q 40.765625 -1.421875 27.09375 -1.421875 \r\n",
       "Q 22.515625 -1.421875 17.65625 -0.515625 \r\n",
       "Q 12.796875 0.390625 7.625 2.203125 \r\n",
       "L 7.625 11.71875 \r\n",
       "Q 11.71875 9.328125 16.59375 8.109375 \r\n",
       "Q 21.484375 6.890625 26.8125 6.890625 \r\n",
       "Q 36.078125 6.890625 40.9375 10.546875 \r\n",
       "Q 45.796875 14.203125 45.796875 21.1875 \r\n",
       "Q 45.796875 27.640625 41.28125 31.265625 \r\n",
       "Q 36.765625 34.90625 28.71875 34.90625 \r\n",
       "L 20.21875 34.90625 \r\n",
       "L 20.21875 43.015625 \r\n",
       "L 29.109375 43.015625 \r\n",
       "Q 36.375 43.015625 40.234375 45.921875 \r\n",
       "Q 44.09375 48.828125 44.09375 54.296875 \r\n",
       "Q 44.09375 59.90625 40.109375 62.90625 \r\n",
       "Q 36.140625 65.921875 28.71875 65.921875 \r\n",
       "Q 24.65625 65.921875 20.015625 65.03125 \r\n",
       "Q 15.375 64.15625 9.8125 62.3125 \r\n",
       "L 9.8125 71.09375 \r\n",
       "Q 15.4375 72.65625 20.34375 73.4375 \r\n",
       "Q 25.25 74.21875 29.59375 74.21875 \r\n",
       "Q 40.828125 74.21875 47.359375 69.109375 \r\n",
       "Q 53.90625 64.015625 53.90625 55.328125 \r\n",
       "Q 53.90625 49.265625 50.4375 45.09375 \r\n",
       "Q 46.96875 40.921875 40.578125 39.3125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-51\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(185.799107 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-51\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"matplotlib.axis_2\">\r\n",
       "    <g id=\"ytick_1\">\r\n",
       "     <g id=\"line2d_5\">\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 0 0 \r\n",
       "L -3.5 0 \r\n",
       "\" id=\"m9c0a461201\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n",
       "      </defs>\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m9c0a461201\" y=\"10.999219\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_5\">\r\n",
       "      <!-- 0 -->\r\n",
       "      <g transform=\"translate(19.925 14.798437)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_2\">\r\n",
       "     <g id=\"line2d_6\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m9c0a461201\" y=\"37.963504\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_6\">\r\n",
       "      <!-- 50 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 10.796875 72.90625 \r\n",
       "L 49.515625 72.90625 \r\n",
       "L 49.515625 64.59375 \r\n",
       "L 19.828125 64.59375 \r\n",
       "L 19.828125 46.734375 \r\n",
       "Q 21.96875 47.46875 24.109375 47.828125 \r\n",
       "Q 26.265625 48.1875 28.421875 48.1875 \r\n",
       "Q 40.625 48.1875 47.75 41.5 \r\n",
       "Q 54.890625 34.8125 54.890625 23.390625 \r\n",
       "Q 54.890625 11.625 47.5625 5.09375 \r\n",
       "Q 40.234375 -1.421875 26.90625 -1.421875 \r\n",
       "Q 22.3125 -1.421875 17.546875 -0.640625 \r\n",
       "Q 12.796875 0.140625 7.71875 1.703125 \r\n",
       "L 7.71875 11.625 \r\n",
       "Q 12.109375 9.234375 16.796875 8.0625 \r\n",
       "Q 21.484375 6.890625 26.703125 6.890625 \r\n",
       "Q 35.15625 6.890625 40.078125 11.328125 \r\n",
       "Q 45.015625 15.765625 45.015625 23.390625 \r\n",
       "Q 45.015625 31 40.078125 35.4375 \r\n",
       "Q 35.15625 39.890625 26.703125 39.890625 \r\n",
       "Q 22.75 39.890625 18.8125 39.015625 \r\n",
       "Q 14.890625 38.140625 10.796875 36.28125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-53\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(13.5625 41.762723)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_3\">\r\n",
       "     <g id=\"line2d_7\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m9c0a461201\" y=\"64.92779\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_7\">\r\n",
       "      <!-- 100 -->\r\n",
       "      <g transform=\"translate(7.2 68.727009)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_4\">\r\n",
       "     <g id=\"line2d_8\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m9c0a461201\" y=\"91.892076\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_8\">\r\n",
       "      <!-- 150 -->\r\n",
       "      <g transform=\"translate(7.2 95.691295)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_5\">\r\n",
       "     <g id=\"line2d_9\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m9c0a461201\" y=\"118.856362\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_9\">\r\n",
       "      <!-- 200 -->\r\n",
       "      <g transform=\"translate(7.2 122.65558)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_6\">\r\n",
       "     <g id=\"line2d_10\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m9c0a461201\" y=\"145.820647\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_10\">\r\n",
       "      <!-- 250 -->\r\n",
       "      <g transform=\"translate(7.2 149.619866)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_7\">\r\n",
       "    <path d=\"M 33.2875 146.629576 \r\n",
       "L 33.2875 10.729576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_8\">\r\n",
       "    <path d=\"M 206.9375 146.629576 \r\n",
       "L 206.9375 10.729576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_9\">\r\n",
       "    <path d=\"M 33.2875 146.629576 \r\n",
       "L 206.9375 146.629576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_10\">\r\n",
       "    <path d=\"M 33.2875 10.729576 \r\n",
       "L 206.9375 10.729576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_11\">\r\n",
       "    <g id=\"patch_11\">\r\n",
       "     <path d=\"M 33.972612 28.794656 \r\n",
       "L 67.871675 28.794656 \r\n",
       "L 67.871675 14.947781 \r\n",
       "L 33.972612 14.947781 \r\n",
       "z\r\n",
       "\" style=\"fill:#0000ff;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- dog=0.9 -->\r\n",
       "    <defs>\r\n",
       "     <path d=\"M 45.40625 46.390625 \r\n",
       "L 45.40625 75.984375 \r\n",
       "L 54.390625 75.984375 \r\n",
       "L 54.390625 0 \r\n",
       "L 45.40625 0 \r\n",
       "L 45.40625 8.203125 \r\n",
       "Q 42.578125 3.328125 38.25 0.953125 \r\n",
       "Q 33.9375 -1.421875 27.875 -1.421875 \r\n",
       "Q 17.96875 -1.421875 11.734375 6.484375 \r\n",
       "Q 5.515625 14.40625 5.515625 27.296875 \r\n",
       "Q 5.515625 40.1875 11.734375 48.09375 \r\n",
       "Q 17.96875 56 27.875 56 \r\n",
       "Q 33.9375 56 38.25 53.625 \r\n",
       "Q 42.578125 51.265625 45.40625 46.390625 \r\n",
       "z\r\n",
       "M 14.796875 27.296875 \r\n",
       "Q 14.796875 17.390625 18.875 11.75 \r\n",
       "Q 22.953125 6.109375 30.078125 6.109375 \r\n",
       "Q 37.203125 6.109375 41.296875 11.75 \r\n",
       "Q 45.40625 17.390625 45.40625 27.296875 \r\n",
       "Q 45.40625 37.203125 41.296875 42.84375 \r\n",
       "Q 37.203125 48.484375 30.078125 48.484375 \r\n",
       "Q 22.953125 48.484375 18.875 42.84375 \r\n",
       "Q 14.796875 37.203125 14.796875 27.296875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-100\"/>\r\n",
       "     <path d=\"M 30.609375 48.390625 \r\n",
       "Q 23.390625 48.390625 19.1875 42.75 \r\n",
       "Q 14.984375 37.109375 14.984375 27.296875 \r\n",
       "Q 14.984375 17.484375 19.15625 11.84375 \r\n",
       "Q 23.34375 6.203125 30.609375 6.203125 \r\n",
       "Q 37.796875 6.203125 41.984375 11.859375 \r\n",
       "Q 46.1875 17.53125 46.1875 27.296875 \r\n",
       "Q 46.1875 37.015625 41.984375 42.703125 \r\n",
       "Q 37.796875 48.390625 30.609375 48.390625 \r\n",
       "z\r\n",
       "M 30.609375 56 \r\n",
       "Q 42.328125 56 49.015625 48.375 \r\n",
       "Q 55.71875 40.765625 55.71875 27.296875 \r\n",
       "Q 55.71875 13.875 49.015625 6.21875 \r\n",
       "Q 42.328125 -1.421875 30.609375 -1.421875 \r\n",
       "Q 18.84375 -1.421875 12.171875 6.21875 \r\n",
       "Q 5.515625 13.875 5.515625 27.296875 \r\n",
       "Q 5.515625 40.765625 12.171875 48.375 \r\n",
       "Q 18.84375 56 30.609375 56 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-111\"/>\r\n",
       "     <path d=\"M 45.40625 27.984375 \r\n",
       "Q 45.40625 37.75 41.375 43.109375 \r\n",
       "Q 37.359375 48.484375 30.078125 48.484375 \r\n",
       "Q 22.859375 48.484375 18.828125 43.109375 \r\n",
       "Q 14.796875 37.75 14.796875 27.984375 \r\n",
       "Q 14.796875 18.265625 18.828125 12.890625 \r\n",
       "Q 22.859375 7.515625 30.078125 7.515625 \r\n",
       "Q 37.359375 7.515625 41.375 12.890625 \r\n",
       "Q 45.40625 18.265625 45.40625 27.984375 \r\n",
       "z\r\n",
       "M 54.390625 6.78125 \r\n",
       "Q 54.390625 -7.171875 48.1875 -13.984375 \r\n",
       "Q 42 -20.796875 29.203125 -20.796875 \r\n",
       "Q 24.46875 -20.796875 20.265625 -20.09375 \r\n",
       "Q 16.0625 -19.390625 12.109375 -17.921875 \r\n",
       "L 12.109375 -9.1875 \r\n",
       "Q 16.0625 -11.328125 19.921875 -12.34375 \r\n",
       "Q 23.78125 -13.375 27.78125 -13.375 \r\n",
       "Q 36.625 -13.375 41.015625 -8.765625 \r\n",
       "Q 45.40625 -4.15625 45.40625 5.171875 \r\n",
       "L 45.40625 9.625 \r\n",
       "Q 42.625 4.78125 38.28125 2.390625 \r\n",
       "Q 33.9375 0 27.875 0 \r\n",
       "Q 17.828125 0 11.671875 7.65625 \r\n",
       "Q 5.515625 15.328125 5.515625 27.984375 \r\n",
       "Q 5.515625 40.671875 11.671875 48.328125 \r\n",
       "Q 17.828125 56 27.875 56 \r\n",
       "Q 33.9375 56 38.28125 53.609375 \r\n",
       "Q 42.625 51.21875 45.40625 46.390625 \r\n",
       "L 45.40625 54.6875 \r\n",
       "L 54.390625 54.6875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-103\"/>\r\n",
       "     <path d=\"M 10.59375 45.40625 \r\n",
       "L 73.1875 45.40625 \r\n",
       "L 73.1875 37.203125 \r\n",
       "L 10.59375 37.203125 \r\n",
       "z\r\n",
       "M 10.59375 25.484375 \r\n",
       "L 73.1875 25.484375 \r\n",
       "L 73.1875 17.1875 \r\n",
       "L 10.59375 17.1875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-61\"/>\r\n",
       "     <path d=\"M 10.6875 12.40625 \r\n",
       "L 21 12.40625 \r\n",
       "L 21 0 \r\n",
       "L 10.6875 0 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-46\"/>\r\n",
       "     <path d=\"M 10.984375 1.515625 \r\n",
       "L 10.984375 10.5 \r\n",
       "Q 14.703125 8.734375 18.5 7.8125 \r\n",
       "Q 22.3125 6.890625 25.984375 6.890625 \r\n",
       "Q 35.75 6.890625 40.890625 13.453125 \r\n",
       "Q 46.046875 20.015625 46.78125 33.40625 \r\n",
       "Q 43.953125 29.203125 39.59375 26.953125 \r\n",
       "Q 35.25 24.703125 29.984375 24.703125 \r\n",
       "Q 19.046875 24.703125 12.671875 31.3125 \r\n",
       "Q 6.296875 37.9375 6.296875 49.421875 \r\n",
       "Q 6.296875 60.640625 12.9375 67.421875 \r\n",
       "Q 19.578125 74.21875 30.609375 74.21875 \r\n",
       "Q 43.265625 74.21875 49.921875 64.515625 \r\n",
       "Q 56.59375 54.828125 56.59375 36.375 \r\n",
       "Q 56.59375 19.140625 48.40625 8.859375 \r\n",
       "Q 40.234375 -1.421875 26.421875 -1.421875 \r\n",
       "Q 22.703125 -1.421875 18.890625 -0.6875 \r\n",
       "Q 15.09375 0.046875 10.984375 1.515625 \r\n",
       "z\r\n",
       "M 30.609375 32.421875 \r\n",
       "Q 37.25 32.421875 41.125 36.953125 \r\n",
       "Q 45.015625 41.5 45.015625 49.421875 \r\n",
       "Q 45.015625 57.28125 41.125 61.84375 \r\n",
       "Q 37.25 66.40625 30.609375 66.40625 \r\n",
       "Q 23.96875 66.40625 20.09375 61.84375 \r\n",
       "Q 16.21875 57.28125 16.21875 49.421875 \r\n",
       "Q 16.21875 41.5 20.09375 36.953125 \r\n",
       "Q 23.96875 32.421875 30.609375 32.421875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-57\"/>\r\n",
       "    </defs>\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(37.992612 23.526844)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-100\"/>\r\n",
       "     <use x=\"63.476562\" xlink:href=\"#DejaVuSans-111\"/>\r\n",
       "     <use x=\"124.658203\" xlink:href=\"#DejaVuSans-103\"/>\r\n",
       "     <use x=\"188.134766\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"271.923828\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "     <use x=\"335.546875\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "     <use x=\"367.333984\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_12\">\r\n",
       "    <g id=\"patch_12\">\r\n",
       "     <path d=\"M 30.499612 45.102657 \r\n",
       "L 64.398674 45.102657 \r\n",
       "L 64.398674 31.255782 \r\n",
       "L 30.499612 31.255782 \r\n",
       "z\r\n",
       "\" style=\"fill:#008000;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- dog=0.8 -->\r\n",
       "    <defs>\r\n",
       "     <path d=\"M 31.78125 34.625 \r\n",
       "Q 24.75 34.625 20.71875 30.859375 \r\n",
       "Q 16.703125 27.09375 16.703125 20.515625 \r\n",
       "Q 16.703125 13.921875 20.71875 10.15625 \r\n",
       "Q 24.75 6.390625 31.78125 6.390625 \r\n",
       "Q 38.8125 6.390625 42.859375 10.171875 \r\n",
       "Q 46.921875 13.96875 46.921875 20.515625 \r\n",
       "Q 46.921875 27.09375 42.890625 30.859375 \r\n",
       "Q 38.875 34.625 31.78125 34.625 \r\n",
       "z\r\n",
       "M 21.921875 38.8125 \r\n",
       "Q 15.578125 40.375 12.03125 44.71875 \r\n",
       "Q 8.5 49.078125 8.5 55.328125 \r\n",
       "Q 8.5 64.0625 14.71875 69.140625 \r\n",
       "Q 20.953125 74.21875 31.78125 74.21875 \r\n",
       "Q 42.671875 74.21875 48.875 69.140625 \r\n",
       "Q 55.078125 64.0625 55.078125 55.328125 \r\n",
       "Q 55.078125 49.078125 51.53125 44.71875 \r\n",
       "Q 48 40.375 41.703125 38.8125 \r\n",
       "Q 48.828125 37.15625 52.796875 32.3125 \r\n",
       "Q 56.78125 27.484375 56.78125 20.515625 \r\n",
       "Q 56.78125 9.90625 50.3125 4.234375 \r\n",
       "Q 43.84375 -1.421875 31.78125 -1.421875 \r\n",
       "Q 19.734375 -1.421875 13.25 4.234375 \r\n",
       "Q 6.78125 9.90625 6.78125 20.515625 \r\n",
       "Q 6.78125 27.484375 10.78125 32.3125 \r\n",
       "Q 14.796875 37.15625 21.921875 38.8125 \r\n",
       "z\r\n",
       "M 18.3125 54.390625 \r\n",
       "Q 18.3125 48.734375 21.84375 45.5625 \r\n",
       "Q 25.390625 42.390625 31.78125 42.390625 \r\n",
       "Q 38.140625 42.390625 41.71875 45.5625 \r\n",
       "Q 45.3125 48.734375 45.3125 54.390625 \r\n",
       "Q 45.3125 60.0625 41.71875 63.234375 \r\n",
       "Q 38.140625 66.40625 31.78125 66.40625 \r\n",
       "Q 25.390625 66.40625 21.84375 63.234375 \r\n",
       "Q 18.3125 60.0625 18.3125 54.390625 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-56\"/>\r\n",
       "    </defs>\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(34.519612 39.834845)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-100\"/>\r\n",
       "     <use x=\"63.476562\" xlink:href=\"#DejaVuSans-111\"/>\r\n",
       "     <use x=\"124.658203\" xlink:href=\"#DejaVuSans-103\"/>\r\n",
       "     <use x=\"188.134766\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"271.923828\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "     <use x=\"335.546875\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "     <use x=\"367.333984\" xlink:href=\"#DejaVuSans-56\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_13\">\r\n",
       "    <g id=\"patch_13\">\r\n",
       "     <path d=\"M 16.607612 58.69266 \r\n",
       "L 50.506674 58.69266 \r\n",
       "L 50.506674 44.845785 \r\n",
       "L 16.607612 44.845785 \r\n",
       "z\r\n",
       "\" style=\"fill:#ff0000;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- dog=0.7 -->\r\n",
       "    <defs>\r\n",
       "     <path d=\"M 8.203125 72.90625 \r\n",
       "L 55.078125 72.90625 \r\n",
       "L 55.078125 68.703125 \r\n",
       "L 28.609375 0 \r\n",
       "L 18.3125 0 \r\n",
       "L 43.21875 64.59375 \r\n",
       "L 8.203125 64.59375 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-55\"/>\r\n",
       "    </defs>\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(20.627612 53.424847)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-100\"/>\r\n",
       "     <use x=\"63.476562\" xlink:href=\"#DejaVuSans-111\"/>\r\n",
       "     <use x=\"124.658203\" xlink:href=\"#DejaVuSans-103\"/>\r\n",
       "     <use x=\"188.134766\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"271.923828\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "     <use x=\"335.546875\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "     <use x=\"367.333984\" xlink:href=\"#DejaVuSans-55\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_14\">\r\n",
       "    <g id=\"patch_14\">\r\n",
       "     <path d=\"M 113.09574 45.102657 \r\n",
       "L 145.033552 45.102657 \r\n",
       "L 145.033552 31.255782 \r\n",
       "L 113.09574 31.255782 \r\n",
       "z\r\n",
       "\" style=\"fill:#bf00bf;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- cat=0.9 -->\r\n",
       "    <defs>\r\n",
       "     <path d=\"M 48.78125 52.59375 \r\n",
       "L 48.78125 44.1875 \r\n",
       "Q 44.96875 46.296875 41.140625 47.34375 \r\n",
       "Q 37.3125 48.390625 33.40625 48.390625 \r\n",
       "Q 24.65625 48.390625 19.8125 42.84375 \r\n",
       "Q 14.984375 37.3125 14.984375 27.296875 \r\n",
       "Q 14.984375 17.28125 19.8125 11.734375 \r\n",
       "Q 24.65625 6.203125 33.40625 6.203125 \r\n",
       "Q 37.3125 6.203125 41.140625 7.25 \r\n",
       "Q 44.96875 8.296875 48.78125 10.40625 \r\n",
       "L 48.78125 2.09375 \r\n",
       "Q 45.015625 0.34375 40.984375 -0.53125 \r\n",
       "Q 36.96875 -1.421875 32.421875 -1.421875 \r\n",
       "Q 20.0625 -1.421875 12.78125 6.34375 \r\n",
       "Q 5.515625 14.109375 5.515625 27.296875 \r\n",
       "Q 5.515625 40.671875 12.859375 48.328125 \r\n",
       "Q 20.21875 56 33.015625 56 \r\n",
       "Q 37.15625 56 41.109375 55.140625 \r\n",
       "Q 45.0625 54.296875 48.78125 52.59375 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-99\"/>\r\n",
       "     <path d=\"M 34.28125 27.484375 \r\n",
       "Q 23.390625 27.484375 19.1875 25 \r\n",
       "Q 14.984375 22.515625 14.984375 16.5 \r\n",
       "Q 14.984375 11.71875 18.140625 8.90625 \r\n",
       "Q 21.296875 6.109375 26.703125 6.109375 \r\n",
       "Q 34.1875 6.109375 38.703125 11.40625 \r\n",
       "Q 43.21875 16.703125 43.21875 25.484375 \r\n",
       "L 43.21875 27.484375 \r\n",
       "z\r\n",
       "M 52.203125 31.203125 \r\n",
       "L 52.203125 0 \r\n",
       "L 43.21875 0 \r\n",
       "L 43.21875 8.296875 \r\n",
       "Q 40.140625 3.328125 35.546875 0.953125 \r\n",
       "Q 30.953125 -1.421875 24.3125 -1.421875 \r\n",
       "Q 15.921875 -1.421875 10.953125 3.296875 \r\n",
       "Q 6 8.015625 6 15.921875 \r\n",
       "Q 6 25.140625 12.171875 29.828125 \r\n",
       "Q 18.359375 34.515625 30.609375 34.515625 \r\n",
       "L 43.21875 34.515625 \r\n",
       "L 43.21875 35.40625 \r\n",
       "Q 43.21875 41.609375 39.140625 45 \r\n",
       "Q 35.0625 48.390625 27.6875 48.390625 \r\n",
       "Q 23 48.390625 18.546875 47.265625 \r\n",
       "Q 14.109375 46.140625 10.015625 43.890625 \r\n",
       "L 10.015625 52.203125 \r\n",
       "Q 14.9375 54.109375 19.578125 55.046875 \r\n",
       "Q 24.21875 56 28.609375 56 \r\n",
       "Q 40.484375 56 46.34375 49.84375 \r\n",
       "Q 52.203125 43.703125 52.203125 31.203125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-97\"/>\r\n",
       "     <path d=\"M 18.3125 70.21875 \r\n",
       "L 18.3125 54.6875 \r\n",
       "L 36.8125 54.6875 \r\n",
       "L 36.8125 47.703125 \r\n",
       "L 18.3125 47.703125 \r\n",
       "L 18.3125 18.015625 \r\n",
       "Q 18.3125 11.328125 20.140625 9.421875 \r\n",
       "Q 21.96875 7.515625 27.59375 7.515625 \r\n",
       "L 36.8125 7.515625 \r\n",
       "L 36.8125 0 \r\n",
       "L 27.59375 0 \r\n",
       "Q 17.1875 0 13.234375 3.875 \r\n",
       "Q 9.28125 7.765625 9.28125 18.015625 \r\n",
       "L 9.28125 47.703125 \r\n",
       "L 2.6875 47.703125 \r\n",
       "L 2.6875 54.6875 \r\n",
       "L 9.28125 54.6875 \r\n",
       "L 9.28125 70.21875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-116\"/>\r\n",
       "    </defs>\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(117.11574 39.834845)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-99\"/>\r\n",
       "     <use x=\"54.980469\" xlink:href=\"#DejaVuSans-97\"/>\r\n",
       "     <use x=\"116.259766\" xlink:href=\"#DejaVuSans-116\"/>\r\n",
       "     <use x=\"155.46875\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"239.257812\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "     <use x=\"302.880859\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "     <use x=\"334.667969\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "  </g>\r\n",
       " </g>\r\n",
       " <defs>\r\n",
       "  <clipPath id=\"p517054fee5\">\r\n",
       "   <rect height=\"135.9\" width=\"173.65\" x=\"33.2875\" y=\"10.729576\"/>\r\n",
       "  </clipPath>\r\n",
       " </defs>\r\n",
       "</svg>\r\n"
      ],
      "text/plain": [
       "<Figure size 252x180 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.imshow(img)\n",
    "show_bboxes(fig.axes, anchors * bbox_scale,\n",
    "        ['dog=0.9', 'dog=0.8', 'dog=0.7', 'cat=0.9'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "EjcO10Zaueot"
   },
   "source": [
    "下面我们实现MultiBoxDetection函数来执行非极大值抑制。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "FZELmPaJuDsJ"
   },
   "outputs": [],
   "source": [
    "from collections import namedtuple\n",
    "Pred_BB_Info = namedtuple(\"Pred_BB_Info\", \n",
    "        [\"index\", \"class_id\", \"confidence\", \"xyxy\"])\n",
    "\n",
    "def non_max_suppression(bb_info_list, nms_threshold=0.5):\n",
    "    \"\"\"\n",
    "    非极大抑制处理预测的边界框\n",
    "    Args:\n",
    "        bb_info_list: Pred_BB_Info的列表, 包含预测类别、置信度等信息\n",
    "        nms_threshold: 阈值\n",
    "    Returns:\n",
    "        output: Pred_BB_Info的列表, 只保留过滤后的边界框信息\n",
    "    \"\"\"\n",
    "    output = []\n",
    "    # 现根据置信度从高到底排序\n",
    "    sorted_bb_info_list = sorted(bb_info_list,\n",
    "                    key = lambda x: x.confidence, \n",
    "                    reverse=True)\n",
    "    while len(sorted_bb_info_list) != 0:\n",
    "        best = sorted_bb_info_list.pop(0)\n",
    "        output.append(best)\n",
    "\n",
    "        if len(sorted_bb_info_list) == 0:\n",
    "            break\n",
    "        bb_xyxy = []\n",
    "        for bb in sorted_bb_info_list:\n",
    "            bb_xyxy.append(bb.xyxy)\n",
    "        \n",
    "        iou = compute_jaccard(tf.convert_to_tensor(best.xyxy),\n",
    "                    tf.squeeze(tf.convert_to_tensor(bb_xyxy), axis=1))[0] # shape: (len(sorted_bb_info_list), )\n",
    "        n = len(sorted_bb_info_list)\n",
    "        sorted_bb_info_list = [\n",
    "                    sorted_bb_info_list[i] for i in \n",
    "                    range(n) if iou[i] <= nms_threshold]\n",
    "    return output"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "_ltVLM2K5h2I"
   },
   "outputs": [],
   "source": [
    "def MultiBoxDetection(cls_prob, loc_pred, anchor, nms_threshold=0.5):\n",
    "    \"\"\"\n",
    "    # 按照「9.4.1. 生成多个锚框」所讲的实现, anchor表示成归一化(xmin, ymin, xmax, ymax).\n",
    "    https://zh.d2l.ai/chapter_computer-vision/anchor.html\n",
    "    Args:\n",
    "        cls_prob: 经过softmax后得到的各个锚框的预测概率, shape:(bn, 预测总类别数+1, 锚框个数)\n",
    "        loc_pred: 预测的各个锚框的偏移量, shape:(bn, 锚框个数*4)\n",
    "        anchor: MultiBoxPrior输出的默认锚框, shape: (1, 锚框个数, 4)\n",
    "        nms_threshold: 非极大抑制中的阈值\n",
    "    Returns:\n",
    "        所有锚框的信息, shape: (bn, 锚框个数, 6)\n",
    "        每个锚框信息由[class_id, confidence, xmin, ymin, xmax, ymax]表示\n",
    "        class_id=-1 表示背景或在非极大值抑制中被移除了\n",
    "    \"\"\"\n",
    "    assert len(cls_prob.shape) == 3 and len(loc_pred.shape) == 2 and len(anchor.shape) == 3\n",
    "    bn = cls_prob.shape[0]\n",
    "\n",
    "    def MultiBoxDetection_one(c_p, l_p, anc, nms_threshold=0.5):\n",
    "        \"\"\"\n",
    "        MultiBoxDetection的辅助函数, 处理batch中的一个\n",
    "        Args:\n",
    "            c_p: (预测总类别数+1, 锚框个数)\n",
    "            l_p: (锚框个数*4, )\n",
    "            anc: (锚框个数, 4)\n",
    "            nms_threshold: 非极大抑制中的阈值\n",
    "        Return:\n",
    "            output: (锚框个数, 6)\n",
    "        \"\"\"\n",
    "        pred_bb_num = c_p.shape[1]\n",
    "        # 加上偏移量\n",
    "        anc = tf.add(anc, tf.reshape(l_p, (pred_bb_num, 4))).numpy()\n",
    "\n",
    "        # 最大的概率\n",
    "        confidence = tf.reduce_max(c_p, axis=0)\n",
    "        # 最大概率对应的id\n",
    "        class_id = tf.argmax(c_p, axis=0)\n",
    "        confidence = confidence.numpy()\n",
    "        class_id = class_id.numpy()\n",
    "\n",
    "        pred_bb_info = [Pred_BB_Info(index=i,\n",
    "                    class_id=class_id[i]-1,\n",
    "                    confidence=confidence[i],\n",
    "                    xyxy=[anc[i]]) # xyxy是个列表\n",
    "                for i in range(pred_bb_num)]\n",
    "        # 正类的index\n",
    "        obj_bb_idx = [bb.index for bb \n",
    "                in non_max_suppression(pred_bb_info,\n",
    "                            nms_threshold)]\n",
    "        output = []\n",
    "        for bb in pred_bb_info:\n",
    "            output.append(np.append([\n",
    "                (bb.class_id if bb.index in obj_bb_idx \n",
    "                        else -1.0),\n",
    "                bb.confidence],\n",
    "                bb.xyxy))\n",
    "        \n",
    "        return tf.convert_to_tensor(output) # shape: (锚框个数， 6)\n",
    "    \n",
    "    batch_output = []\n",
    "    for b in range(bn):\n",
    "        batch_output.append(MultiBoxDetection_one(cls_prob[b],\n",
    "                        loc_pred[b], anchor[0],\n",
    "                        nms_threshold))\n",
    "    \n",
    "    return tf.convert_to_tensor(batch_output)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "vMLaUn7iMTP6"
   },
   "source": [
    "然后我们运行MultiBoxDetection函数并设阈值为0.5。这里为输入都增加了样本维。我们看到，返回的结果的形状为(批量大小, 锚框个数, 6)。其中每一行的6个元素代表同一个预测边界框的输出信息。第一个元素是索引从0开始计数的预测类别（0为狗，1为猫），其中-1表示背景或在非极大值抑制中被移除。第二个元素是预测边界框的置信度。剩余的4个元素分别是预测边界框左上角的xx和yy轴坐标以及右下角的xx和yy轴坐标（值域在0到1之间）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 168
    },
    "colab_type": "code",
    "id": "y3jhOv8aMS-W",
    "outputId": "0ce1c5d3-ce2f-4c25-c48e-badbb254320b"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: shape=(1, 4, 6), dtype=float64, numpy=\n",
       "array([[[ 0.        ,  0.89999998,  0.1       ,  0.08      ,\n",
       "          0.51999998,  0.92000002],\n",
       "        [-1.        ,  0.80000001,  0.08      ,  0.2       ,\n",
       "          0.56      ,  0.94999999],\n",
       "        [-1.        ,  0.69999999,  0.        ,  0.30000001,\n",
       "          0.62      ,  0.91000003],\n",
       "        [ 1.        ,  0.89999998,  0.55000001,  0.2       ,\n",
       "          0.89999998,  0.88      ]]])>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "output = MultiBoxDetection(\n",
    "    tf.expand_dims(cls_probs, 0),\n",
    "    tf.expand_dims(offset_preds, 0),\n",
    "    tf.expand_dims(anchors, 0),\n",
    "    nms_threshold=0.5)\n",
    "output"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "dmdW_QkUb-1h"
   },
   "source": [
    "我们移除掉类别为-1的预测边界框，并可视化非极大值抑制保留的结果。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 248
    },
    "colab_type": "code",
    "id": "Za9SZv7dYLod",
    "outputId": "89d60743-5834-4df9-819a-f4802a2cfe46"
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n",
       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n",
       "<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n",
       "<svg height=\"170.507701pt\" version=\"1.1\" viewBox=\"0 0 214.1375 170.507701\" width=\"214.1375pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n",
       " <defs>\r\n",
       "  <style type=\"text/css\">\r\n",
       "*{stroke-linecap:butt;stroke-linejoin:round;}\r\n",
       "  </style>\r\n",
       " </defs>\r\n",
       " <g id=\"figure_1\">\r\n",
       "  <g id=\"patch_1\">\r\n",
       "   <path d=\"M 0 170.507701 \r\n",
       "L 214.1375 170.507701 \r\n",
       "L 214.1375 0 \r\n",
       "L 0 0 \r\n",
       "z\r\n",
       "\" style=\"fill:none;\"/>\r\n",
       "  </g>\r\n",
       "  <g id=\"axes_1\">\r\n",
       "   <g id=\"patch_2\">\r\n",
       "    <path d=\"M 33.2875 146.629576 \r\n",
       "L 206.9375 146.629576 \r\n",
       "L 206.9375 10.729576 \r\n",
       "L 33.2875 10.729576 \r\n",
       "z\r\n",
       "\" style=\"fill:#ffffff;\"/>\r\n",
       "   </g>\r\n",
       "   <g clip-path=\"url(#p7d2a54dc52)\">\r\n",
       "    <image height=\"136\" id=\"imagec6877e4534\" transform=\"scale(1 -1)translate(0 -136)\" width=\"174\" x=\"33.2875\" xlink:href=\"data:image/png;base64,\r\n",
       "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\" y=\"-10.629576\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_3\">\r\n",
       "    <path clip-path=\"url(#p7d2a54dc52)\" d=\"M 50.922143 21.871219 \r\n",
       "L 123.855136 21.871219 \r\n",
       "L 123.855136 136.027225 \r\n",
       "L 50.922143 136.027225 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#0000ff;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_4\">\r\n",
       "    <path clip-path=\"url(#p7d2a54dc52)\" d=\"M 129.064646 38.17922 \r\n",
       "L 189.842136 38.17922 \r\n",
       "L 189.842136 130.591208 \r\n",
       "L 129.064646 130.591208 \r\n",
       "z\r\n",
       "\" style=\"fill:none;stroke:#0000ff;stroke-linejoin:miter;stroke-width:2;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"matplotlib.axis_1\">\r\n",
       "    <g id=\"xtick_1\">\r\n",
       "     <g id=\"line2d_1\">\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 0 0 \r\n",
       "L 0 3.5 \r\n",
       "\" id=\"m24ce6353c5\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n",
       "      </defs>\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.557143\" xlink:href=\"#m24ce6353c5\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_1\">\r\n",
       "      <!-- 0 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 31.78125 66.40625 \r\n",
       "Q 24.171875 66.40625 20.328125 58.90625 \r\n",
       "Q 16.5 51.421875 16.5 36.375 \r\n",
       "Q 16.5 21.390625 20.328125 13.890625 \r\n",
       "Q 24.171875 6.390625 31.78125 6.390625 \r\n",
       "Q 39.453125 6.390625 43.28125 13.890625 \r\n",
       "Q 47.125 21.390625 47.125 36.375 \r\n",
       "Q 47.125 51.421875 43.28125 58.90625 \r\n",
       "Q 39.453125 66.40625 31.78125 66.40625 \r\n",
       "z\r\n",
       "M 31.78125 74.21875 \r\n",
       "Q 44.046875 74.21875 50.515625 64.515625 \r\n",
       "Q 56.984375 54.828125 56.984375 36.375 \r\n",
       "Q 56.984375 17.96875 50.515625 8.265625 \r\n",
       "Q 44.046875 -1.421875 31.78125 -1.421875 \r\n",
       "Q 19.53125 -1.421875 13.0625 8.265625 \r\n",
       "Q 6.59375 17.96875 6.59375 36.375 \r\n",
       "Q 6.59375 54.828125 13.0625 64.515625 \r\n",
       "Q 19.53125 74.21875 31.78125 74.21875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-48\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(30.375893 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_2\">\r\n",
       "     <g id=\"line2d_2\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"87.485714\" xlink:href=\"#m24ce6353c5\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_2\">\r\n",
       "      <!-- 100 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 12.40625 8.296875 \r\n",
       "L 28.515625 8.296875 \r\n",
       "L 28.515625 63.921875 \r\n",
       "L 10.984375 60.40625 \r\n",
       "L 10.984375 69.390625 \r\n",
       "L 28.421875 72.90625 \r\n",
       "L 38.28125 72.90625 \r\n",
       "L 38.28125 8.296875 \r\n",
       "L 54.390625 8.296875 \r\n",
       "L 54.390625 0 \r\n",
       "L 12.40625 0 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-49\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(77.941964 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_3\">\r\n",
       "     <g id=\"line2d_3\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"141.414286\" xlink:href=\"#m24ce6353c5\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_3\">\r\n",
       "      <!-- 200 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 19.1875 8.296875 \r\n",
       "L 53.609375 8.296875 \r\n",
       "L 53.609375 0 \r\n",
       "L 7.328125 0 \r\n",
       "L 7.328125 8.296875 \r\n",
       "Q 12.9375 14.109375 22.625 23.890625 \r\n",
       "Q 32.328125 33.6875 34.8125 36.53125 \r\n",
       "Q 39.546875 41.84375 41.421875 45.53125 \r\n",
       "Q 43.3125 49.21875 43.3125 52.78125 \r\n",
       "Q 43.3125 58.59375 39.234375 62.25 \r\n",
       "Q 35.15625 65.921875 28.609375 65.921875 \r\n",
       "Q 23.96875 65.921875 18.8125 64.3125 \r\n",
       "Q 13.671875 62.703125 7.8125 59.421875 \r\n",
       "L 7.8125 69.390625 \r\n",
       "Q 13.765625 71.78125 18.9375 73 \r\n",
       "Q 24.125 74.21875 28.421875 74.21875 \r\n",
       "Q 39.75 74.21875 46.484375 68.546875 \r\n",
       "Q 53.21875 62.890625 53.21875 53.421875 \r\n",
       "Q 53.21875 48.921875 51.53125 44.890625 \r\n",
       "Q 49.859375 40.875 45.40625 35.40625 \r\n",
       "Q 44.1875 33.984375 37.640625 27.21875 \r\n",
       "Q 31.109375 20.453125 19.1875 8.296875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-50\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(131.870536 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_4\">\r\n",
       "     <g id=\"line2d_4\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"195.342857\" xlink:href=\"#m24ce6353c5\" y=\"146.629576\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_4\">\r\n",
       "      <!-- 300 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 40.578125 39.3125 \r\n",
       "Q 47.65625 37.796875 51.625 33 \r\n",
       "Q 55.609375 28.21875 55.609375 21.1875 \r\n",
       "Q 55.609375 10.40625 48.1875 4.484375 \r\n",
       "Q 40.765625 -1.421875 27.09375 -1.421875 \r\n",
       "Q 22.515625 -1.421875 17.65625 -0.515625 \r\n",
       "Q 12.796875 0.390625 7.625 2.203125 \r\n",
       "L 7.625 11.71875 \r\n",
       "Q 11.71875 9.328125 16.59375 8.109375 \r\n",
       "Q 21.484375 6.890625 26.8125 6.890625 \r\n",
       "Q 36.078125 6.890625 40.9375 10.546875 \r\n",
       "Q 45.796875 14.203125 45.796875 21.1875 \r\n",
       "Q 45.796875 27.640625 41.28125 31.265625 \r\n",
       "Q 36.765625 34.90625 28.71875 34.90625 \r\n",
       "L 20.21875 34.90625 \r\n",
       "L 20.21875 43.015625 \r\n",
       "L 29.109375 43.015625 \r\n",
       "Q 36.375 43.015625 40.234375 45.921875 \r\n",
       "Q 44.09375 48.828125 44.09375 54.296875 \r\n",
       "Q 44.09375 59.90625 40.109375 62.90625 \r\n",
       "Q 36.140625 65.921875 28.71875 65.921875 \r\n",
       "Q 24.65625 65.921875 20.015625 65.03125 \r\n",
       "Q 15.375 64.15625 9.8125 62.3125 \r\n",
       "L 9.8125 71.09375 \r\n",
       "Q 15.4375 72.65625 20.34375 73.4375 \r\n",
       "Q 25.25 74.21875 29.59375 74.21875 \r\n",
       "Q 40.828125 74.21875 47.359375 69.109375 \r\n",
       "Q 53.90625 64.015625 53.90625 55.328125 \r\n",
       "Q 53.90625 49.265625 50.4375 45.09375 \r\n",
       "Q 46.96875 40.921875 40.578125 39.3125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-51\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(185.799107 161.228013)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-51\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"matplotlib.axis_2\">\r\n",
       "    <g id=\"ytick_1\">\r\n",
       "     <g id=\"line2d_5\">\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 0 0 \r\n",
       "L -3.5 0 \r\n",
       "\" id=\"ma9a4858812\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n",
       "      </defs>\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#ma9a4858812\" y=\"10.999219\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_5\">\r\n",
       "      <!-- 0 -->\r\n",
       "      <g transform=\"translate(19.925 14.798437)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_2\">\r\n",
       "     <g id=\"line2d_6\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#ma9a4858812\" y=\"37.963504\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_6\">\r\n",
       "      <!-- 50 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 10.796875 72.90625 \r\n",
       "L 49.515625 72.90625 \r\n",
       "L 49.515625 64.59375 \r\n",
       "L 19.828125 64.59375 \r\n",
       "L 19.828125 46.734375 \r\n",
       "Q 21.96875 47.46875 24.109375 47.828125 \r\n",
       "Q 26.265625 48.1875 28.421875 48.1875 \r\n",
       "Q 40.625 48.1875 47.75 41.5 \r\n",
       "Q 54.890625 34.8125 54.890625 23.390625 \r\n",
       "Q 54.890625 11.625 47.5625 5.09375 \r\n",
       "Q 40.234375 -1.421875 26.90625 -1.421875 \r\n",
       "Q 22.3125 -1.421875 17.546875 -0.640625 \r\n",
       "Q 12.796875 0.140625 7.71875 1.703125 \r\n",
       "L 7.71875 11.625 \r\n",
       "Q 12.109375 9.234375 16.796875 8.0625 \r\n",
       "Q 21.484375 6.890625 26.703125 6.890625 \r\n",
       "Q 35.15625 6.890625 40.078125 11.328125 \r\n",
       "Q 45.015625 15.765625 45.015625 23.390625 \r\n",
       "Q 45.015625 31 40.078125 35.4375 \r\n",
       "Q 35.15625 39.890625 26.703125 39.890625 \r\n",
       "Q 22.75 39.890625 18.8125 39.015625 \r\n",
       "Q 14.890625 38.140625 10.796875 36.28125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-53\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(13.5625 41.762723)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_3\">\r\n",
       "     <g id=\"line2d_7\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#ma9a4858812\" y=\"64.92779\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_7\">\r\n",
       "      <!-- 100 -->\r\n",
       "      <g transform=\"translate(7.2 68.727009)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_4\">\r\n",
       "     <g id=\"line2d_8\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#ma9a4858812\" y=\"91.892076\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_8\">\r\n",
       "      <!-- 150 -->\r\n",
       "      <g transform=\"translate(7.2 95.691295)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_5\">\r\n",
       "     <g id=\"line2d_9\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#ma9a4858812\" y=\"118.856362\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_9\">\r\n",
       "      <!-- 200 -->\r\n",
       "      <g transform=\"translate(7.2 122.65558)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_6\">\r\n",
       "     <g id=\"line2d_10\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#ma9a4858812\" y=\"145.820647\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_10\">\r\n",
       "      <!-- 250 -->\r\n",
       "      <g transform=\"translate(7.2 149.619866)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_5\">\r\n",
       "    <path d=\"M 33.2875 146.629576 \r\n",
       "L 33.2875 10.729576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_6\">\r\n",
       "    <path d=\"M 206.9375 146.629576 \r\n",
       "L 206.9375 10.729576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_7\">\r\n",
       "    <path d=\"M 33.2875 146.629576 \r\n",
       "L 206.9375 146.629576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_8\">\r\n",
       "    <path d=\"M 33.2875 10.729576 \r\n",
       "L 206.9375 10.729576 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_11\">\r\n",
       "    <g id=\"patch_9\">\r\n",
       "     <path d=\"M 5.341362 28.794656 \r\n",
       "L 96.502925 28.794656 \r\n",
       "L 96.502925 14.947781 \r\n",
       "L 5.341362 14.947781 \r\n",
       "z\r\n",
       "\" style=\"fill:#0000ff;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- dog=0.8999999761581421 -->\r\n",
       "    <defs>\r\n",
       "     <path d=\"M 45.40625 46.390625 \r\n",
       "L 45.40625 75.984375 \r\n",
       "L 54.390625 75.984375 \r\n",
       "L 54.390625 0 \r\n",
       "L 45.40625 0 \r\n",
       "L 45.40625 8.203125 \r\n",
       "Q 42.578125 3.328125 38.25 0.953125 \r\n",
       "Q 33.9375 -1.421875 27.875 -1.421875 \r\n",
       "Q 17.96875 -1.421875 11.734375 6.484375 \r\n",
       "Q 5.515625 14.40625 5.515625 27.296875 \r\n",
       "Q 5.515625 40.1875 11.734375 48.09375 \r\n",
       "Q 17.96875 56 27.875 56 \r\n",
       "Q 33.9375 56 38.25 53.625 \r\n",
       "Q 42.578125 51.265625 45.40625 46.390625 \r\n",
       "z\r\n",
       "M 14.796875 27.296875 \r\n",
       "Q 14.796875 17.390625 18.875 11.75 \r\n",
       "Q 22.953125 6.109375 30.078125 6.109375 \r\n",
       "Q 37.203125 6.109375 41.296875 11.75 \r\n",
       "Q 45.40625 17.390625 45.40625 27.296875 \r\n",
       "Q 45.40625 37.203125 41.296875 42.84375 \r\n",
       "Q 37.203125 48.484375 30.078125 48.484375 \r\n",
       "Q 22.953125 48.484375 18.875 42.84375 \r\n",
       "Q 14.796875 37.203125 14.796875 27.296875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-100\"/>\r\n",
       "     <path d=\"M 30.609375 48.390625 \r\n",
       "Q 23.390625 48.390625 19.1875 42.75 \r\n",
       "Q 14.984375 37.109375 14.984375 27.296875 \r\n",
       "Q 14.984375 17.484375 19.15625 11.84375 \r\n",
       "Q 23.34375 6.203125 30.609375 6.203125 \r\n",
       "Q 37.796875 6.203125 41.984375 11.859375 \r\n",
       "Q 46.1875 17.53125 46.1875 27.296875 \r\n",
       "Q 46.1875 37.015625 41.984375 42.703125 \r\n",
       "Q 37.796875 48.390625 30.609375 48.390625 \r\n",
       "z\r\n",
       "M 30.609375 56 \r\n",
       "Q 42.328125 56 49.015625 48.375 \r\n",
       "Q 55.71875 40.765625 55.71875 27.296875 \r\n",
       "Q 55.71875 13.875 49.015625 6.21875 \r\n",
       "Q 42.328125 -1.421875 30.609375 -1.421875 \r\n",
       "Q 18.84375 -1.421875 12.171875 6.21875 \r\n",
       "Q 5.515625 13.875 5.515625 27.296875 \r\n",
       "Q 5.515625 40.765625 12.171875 48.375 \r\n",
       "Q 18.84375 56 30.609375 56 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-111\"/>\r\n",
       "     <path d=\"M 45.40625 27.984375 \r\n",
       "Q 45.40625 37.75 41.375 43.109375 \r\n",
       "Q 37.359375 48.484375 30.078125 48.484375 \r\n",
       "Q 22.859375 48.484375 18.828125 43.109375 \r\n",
       "Q 14.796875 37.75 14.796875 27.984375 \r\n",
       "Q 14.796875 18.265625 18.828125 12.890625 \r\n",
       "Q 22.859375 7.515625 30.078125 7.515625 \r\n",
       "Q 37.359375 7.515625 41.375 12.890625 \r\n",
       "Q 45.40625 18.265625 45.40625 27.984375 \r\n",
       "z\r\n",
       "M 54.390625 6.78125 \r\n",
       "Q 54.390625 -7.171875 48.1875 -13.984375 \r\n",
       "Q 42 -20.796875 29.203125 -20.796875 \r\n",
       "Q 24.46875 -20.796875 20.265625 -20.09375 \r\n",
       "Q 16.0625 -19.390625 12.109375 -17.921875 \r\n",
       "L 12.109375 -9.1875 \r\n",
       "Q 16.0625 -11.328125 19.921875 -12.34375 \r\n",
       "Q 23.78125 -13.375 27.78125 -13.375 \r\n",
       "Q 36.625 -13.375 41.015625 -8.765625 \r\n",
       "Q 45.40625 -4.15625 45.40625 5.171875 \r\n",
       "L 45.40625 9.625 \r\n",
       "Q 42.625 4.78125 38.28125 2.390625 \r\n",
       "Q 33.9375 0 27.875 0 \r\n",
       "Q 17.828125 0 11.671875 7.65625 \r\n",
       "Q 5.515625 15.328125 5.515625 27.984375 \r\n",
       "Q 5.515625 40.671875 11.671875 48.328125 \r\n",
       "Q 17.828125 56 27.875 56 \r\n",
       "Q 33.9375 56 38.28125 53.609375 \r\n",
       "Q 42.625 51.21875 45.40625 46.390625 \r\n",
       "L 45.40625 54.6875 \r\n",
       "L 54.390625 54.6875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-103\"/>\r\n",
       "     <path d=\"M 10.59375 45.40625 \r\n",
       "L 73.1875 45.40625 \r\n",
       "L 73.1875 37.203125 \r\n",
       "L 10.59375 37.203125 \r\n",
       "z\r\n",
       "M 10.59375 25.484375 \r\n",
       "L 73.1875 25.484375 \r\n",
       "L 73.1875 17.1875 \r\n",
       "L 10.59375 17.1875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-61\"/>\r\n",
       "     <path d=\"M 10.6875 12.40625 \r\n",
       "L 21 12.40625 \r\n",
       "L 21 0 \r\n",
       "L 10.6875 0 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-46\"/>\r\n",
       "     <path d=\"M 31.78125 34.625 \r\n",
       "Q 24.75 34.625 20.71875 30.859375 \r\n",
       "Q 16.703125 27.09375 16.703125 20.515625 \r\n",
       "Q 16.703125 13.921875 20.71875 10.15625 \r\n",
       "Q 24.75 6.390625 31.78125 6.390625 \r\n",
       "Q 38.8125 6.390625 42.859375 10.171875 \r\n",
       "Q 46.921875 13.96875 46.921875 20.515625 \r\n",
       "Q 46.921875 27.09375 42.890625 30.859375 \r\n",
       "Q 38.875 34.625 31.78125 34.625 \r\n",
       "z\r\n",
       "M 21.921875 38.8125 \r\n",
       "Q 15.578125 40.375 12.03125 44.71875 \r\n",
       "Q 8.5 49.078125 8.5 55.328125 \r\n",
       "Q 8.5 64.0625 14.71875 69.140625 \r\n",
       "Q 20.953125 74.21875 31.78125 74.21875 \r\n",
       "Q 42.671875 74.21875 48.875 69.140625 \r\n",
       "Q 55.078125 64.0625 55.078125 55.328125 \r\n",
       "Q 55.078125 49.078125 51.53125 44.71875 \r\n",
       "Q 48 40.375 41.703125 38.8125 \r\n",
       "Q 48.828125 37.15625 52.796875 32.3125 \r\n",
       "Q 56.78125 27.484375 56.78125 20.515625 \r\n",
       "Q 56.78125 9.90625 50.3125 4.234375 \r\n",
       "Q 43.84375 -1.421875 31.78125 -1.421875 \r\n",
       "Q 19.734375 -1.421875 13.25 4.234375 \r\n",
       "Q 6.78125 9.90625 6.78125 20.515625 \r\n",
       "Q 6.78125 27.484375 10.78125 32.3125 \r\n",
       "Q 14.796875 37.15625 21.921875 38.8125 \r\n",
       "z\r\n",
       "M 18.3125 54.390625 \r\n",
       "Q 18.3125 48.734375 21.84375 45.5625 \r\n",
       "Q 25.390625 42.390625 31.78125 42.390625 \r\n",
       "Q 38.140625 42.390625 41.71875 45.5625 \r\n",
       "Q 45.3125 48.734375 45.3125 54.390625 \r\n",
       "Q 45.3125 60.0625 41.71875 63.234375 \r\n",
       "Q 38.140625 66.40625 31.78125 66.40625 \r\n",
       "Q 25.390625 66.40625 21.84375 63.234375 \r\n",
       "Q 18.3125 60.0625 18.3125 54.390625 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-56\"/>\r\n",
       "     <path d=\"M 10.984375 1.515625 \r\n",
       "L 10.984375 10.5 \r\n",
       "Q 14.703125 8.734375 18.5 7.8125 \r\n",
       "Q 22.3125 6.890625 25.984375 6.890625 \r\n",
       "Q 35.75 6.890625 40.890625 13.453125 \r\n",
       "Q 46.046875 20.015625 46.78125 33.40625 \r\n",
       "Q 43.953125 29.203125 39.59375 26.953125 \r\n",
       "Q 35.25 24.703125 29.984375 24.703125 \r\n",
       "Q 19.046875 24.703125 12.671875 31.3125 \r\n",
       "Q 6.296875 37.9375 6.296875 49.421875 \r\n",
       "Q 6.296875 60.640625 12.9375 67.421875 \r\n",
       "Q 19.578125 74.21875 30.609375 74.21875 \r\n",
       "Q 43.265625 74.21875 49.921875 64.515625 \r\n",
       "Q 56.59375 54.828125 56.59375 36.375 \r\n",
       "Q 56.59375 19.140625 48.40625 8.859375 \r\n",
       "Q 40.234375 -1.421875 26.421875 -1.421875 \r\n",
       "Q 22.703125 -1.421875 18.890625 -0.6875 \r\n",
       "Q 15.09375 0.046875 10.984375 1.515625 \r\n",
       "z\r\n",
       "M 30.609375 32.421875 \r\n",
       "Q 37.25 32.421875 41.125 36.953125 \r\n",
       "Q 45.015625 41.5 45.015625 49.421875 \r\n",
       "Q 45.015625 57.28125 41.125 61.84375 \r\n",
       "Q 37.25 66.40625 30.609375 66.40625 \r\n",
       "Q 23.96875 66.40625 20.09375 61.84375 \r\n",
       "Q 16.21875 57.28125 16.21875 49.421875 \r\n",
       "Q 16.21875 41.5 20.09375 36.953125 \r\n",
       "Q 23.96875 32.421875 30.609375 32.421875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-57\"/>\r\n",
       "     <path d=\"M 8.203125 72.90625 \r\n",
       "L 55.078125 72.90625 \r\n",
       "L 55.078125 68.703125 \r\n",
       "L 28.609375 0 \r\n",
       "L 18.3125 0 \r\n",
       "L 43.21875 64.59375 \r\n",
       "L 8.203125 64.59375 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-55\"/>\r\n",
       "     <path d=\"M 33.015625 40.375 \r\n",
       "Q 26.375 40.375 22.484375 35.828125 \r\n",
       "Q 18.609375 31.296875 18.609375 23.390625 \r\n",
       "Q 18.609375 15.53125 22.484375 10.953125 \r\n",
       "Q 26.375 6.390625 33.015625 6.390625 \r\n",
       "Q 39.65625 6.390625 43.53125 10.953125 \r\n",
       "Q 47.40625 15.53125 47.40625 23.390625 \r\n",
       "Q 47.40625 31.296875 43.53125 35.828125 \r\n",
       "Q 39.65625 40.375 33.015625 40.375 \r\n",
       "z\r\n",
       "M 52.59375 71.296875 \r\n",
       "L 52.59375 62.3125 \r\n",
       "Q 48.875 64.0625 45.09375 64.984375 \r\n",
       "Q 41.3125 65.921875 37.59375 65.921875 \r\n",
       "Q 27.828125 65.921875 22.671875 59.328125 \r\n",
       "Q 17.53125 52.734375 16.796875 39.40625 \r\n",
       "Q 19.671875 43.65625 24.015625 45.921875 \r\n",
       "Q 28.375 48.1875 33.59375 48.1875 \r\n",
       "Q 44.578125 48.1875 50.953125 41.515625 \r\n",
       "Q 57.328125 34.859375 57.328125 23.390625 \r\n",
       "Q 57.328125 12.15625 50.6875 5.359375 \r\n",
       "Q 44.046875 -1.421875 33.015625 -1.421875 \r\n",
       "Q 20.359375 -1.421875 13.671875 8.265625 \r\n",
       "Q 6.984375 17.96875 6.984375 36.375 \r\n",
       "Q 6.984375 53.65625 15.1875 63.9375 \r\n",
       "Q 23.390625 74.21875 37.203125 74.21875 \r\n",
       "Q 40.921875 74.21875 44.703125 73.484375 \r\n",
       "Q 48.484375 72.75 52.59375 71.296875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-54\"/>\r\n",
       "     <path d=\"M 37.796875 64.3125 \r\n",
       "L 12.890625 25.390625 \r\n",
       "L 37.796875 25.390625 \r\n",
       "z\r\n",
       "M 35.203125 72.90625 \r\n",
       "L 47.609375 72.90625 \r\n",
       "L 47.609375 25.390625 \r\n",
       "L 58.015625 25.390625 \r\n",
       "L 58.015625 17.1875 \r\n",
       "L 47.609375 17.1875 \r\n",
       "L 47.609375 0 \r\n",
       "L 37.796875 0 \r\n",
       "L 37.796875 17.1875 \r\n",
       "L 4.890625 17.1875 \r\n",
       "L 4.890625 26.703125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-52\"/>\r\n",
       "    </defs>\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(9.361362 23.526844)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-100\"/>\r\n",
       "     <use x=\"63.476562\" xlink:href=\"#DejaVuSans-111\"/>\r\n",
       "     <use x=\"124.658203\" xlink:href=\"#DejaVuSans-103\"/>\r\n",
       "     <use x=\"188.134766\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"271.923828\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "     <use x=\"335.546875\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "     <use x=\"367.333984\" xlink:href=\"#DejaVuSans-56\"/>\r\n",
       "     <use x=\"430.957031\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "     <use x=\"494.580078\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "     <use x=\"558.203125\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "     <use x=\"621.826172\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "     <use x=\"685.449219\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "     <use x=\"749.072266\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "     <use x=\"812.695312\" xlink:href=\"#DejaVuSans-55\"/>\r\n",
       "     <use x=\"876.318359\" xlink:href=\"#DejaVuSans-54\"/>\r\n",
       "     <use x=\"939.941406\" xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "     <use x=\"1003.564453\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "     <use x=\"1067.1875\" xlink:href=\"#DejaVuSans-56\"/>\r\n",
       "     <use x=\"1130.810547\" xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "     <use x=\"1194.433594\" xlink:href=\"#DejaVuSans-52\"/>\r\n",
       "     <use x=\"1258.056641\" xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "     <use x=\"1321.679688\" xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"text_12\">\r\n",
       "    <g id=\"patch_10\">\r\n",
       "     <path d=\"M 84.46449 45.102657 \r\n",
       "L 173.664802 45.102657 \r\n",
       "L 173.664802 31.255782 \r\n",
       "L 84.46449 31.255782 \r\n",
       "z\r\n",
       "\" style=\"fill:#0000ff;\"/>\r\n",
       "    </g>\r\n",
       "    <!-- cat=0.8999999761581421 -->\r\n",
       "    <defs>\r\n",
       "     <path d=\"M 48.78125 52.59375 \r\n",
       "L 48.78125 44.1875 \r\n",
       "Q 44.96875 46.296875 41.140625 47.34375 \r\n",
       "Q 37.3125 48.390625 33.40625 48.390625 \r\n",
       "Q 24.65625 48.390625 19.8125 42.84375 \r\n",
       "Q 14.984375 37.3125 14.984375 27.296875 \r\n",
       "Q 14.984375 17.28125 19.8125 11.734375 \r\n",
       "Q 24.65625 6.203125 33.40625 6.203125 \r\n",
       "Q 37.3125 6.203125 41.140625 7.25 \r\n",
       "Q 44.96875 8.296875 48.78125 10.40625 \r\n",
       "L 48.78125 2.09375 \r\n",
       "Q 45.015625 0.34375 40.984375 -0.53125 \r\n",
       "Q 36.96875 -1.421875 32.421875 -1.421875 \r\n",
       "Q 20.0625 -1.421875 12.78125 6.34375 \r\n",
       "Q 5.515625 14.109375 5.515625 27.296875 \r\n",
       "Q 5.515625 40.671875 12.859375 48.328125 \r\n",
       "Q 20.21875 56 33.015625 56 \r\n",
       "Q 37.15625 56 41.109375 55.140625 \r\n",
       "Q 45.0625 54.296875 48.78125 52.59375 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-99\"/>\r\n",
       "     <path d=\"M 34.28125 27.484375 \r\n",
       "Q 23.390625 27.484375 19.1875 25 \r\n",
       "Q 14.984375 22.515625 14.984375 16.5 \r\n",
       "Q 14.984375 11.71875 18.140625 8.90625 \r\n",
       "Q 21.296875 6.109375 26.703125 6.109375 \r\n",
       "Q 34.1875 6.109375 38.703125 11.40625 \r\n",
       "Q 43.21875 16.703125 43.21875 25.484375 \r\n",
       "L 43.21875 27.484375 \r\n",
       "z\r\n",
       "M 52.203125 31.203125 \r\n",
       "L 52.203125 0 \r\n",
       "L 43.21875 0 \r\n",
       "L 43.21875 8.296875 \r\n",
       "Q 40.140625 3.328125 35.546875 0.953125 \r\n",
       "Q 30.953125 -1.421875 24.3125 -1.421875 \r\n",
       "Q 15.921875 -1.421875 10.953125 3.296875 \r\n",
       "Q 6 8.015625 6 15.921875 \r\n",
       "Q 6 25.140625 12.171875 29.828125 \r\n",
       "Q 18.359375 34.515625 30.609375 34.515625 \r\n",
       "L 43.21875 34.515625 \r\n",
       "L 43.21875 35.40625 \r\n",
       "Q 43.21875 41.609375 39.140625 45 \r\n",
       "Q 35.0625 48.390625 27.6875 48.390625 \r\n",
       "Q 23 48.390625 18.546875 47.265625 \r\n",
       "Q 14.109375 46.140625 10.015625 43.890625 \r\n",
       "L 10.015625 52.203125 \r\n",
       "Q 14.9375 54.109375 19.578125 55.046875 \r\n",
       "Q 24.21875 56 28.609375 56 \r\n",
       "Q 40.484375 56 46.34375 49.84375 \r\n",
       "Q 52.203125 43.703125 52.203125 31.203125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-97\"/>\r\n",
       "     <path d=\"M 18.3125 70.21875 \r\n",
       "L 18.3125 54.6875 \r\n",
       "L 36.8125 54.6875 \r\n",
       "L 36.8125 47.703125 \r\n",
       "L 18.3125 47.703125 \r\n",
       "L 18.3125 18.015625 \r\n",
       "Q 18.3125 11.328125 20.140625 9.421875 \r\n",
       "Q 21.96875 7.515625 27.59375 7.515625 \r\n",
       "L 36.8125 7.515625 \r\n",
       "L 36.8125 0 \r\n",
       "L 27.59375 0 \r\n",
       "Q 17.1875 0 13.234375 3.875 \r\n",
       "Q 9.28125 7.765625 9.28125 18.015625 \r\n",
       "L 9.28125 47.703125 \r\n",
       "L 2.6875 47.703125 \r\n",
       "L 2.6875 54.6875 \r\n",
       "L 9.28125 54.6875 \r\n",
       "L 9.28125 70.21875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-116\"/>\r\n",
       "    </defs>\r\n",
       "    <g style=\"fill:#ffffff;\" transform=\"translate(88.48449 39.834845)scale(0.06 -0.06)\">\r\n",
       "     <use xlink:href=\"#DejaVuSans-99\"/>\r\n",
       "     <use x=\"54.980469\" xlink:href=\"#DejaVuSans-97\"/>\r\n",
       "     <use x=\"116.259766\" xlink:href=\"#DejaVuSans-116\"/>\r\n",
       "     <use x=\"155.46875\" xlink:href=\"#DejaVuSans-61\"/>\r\n",
       "     <use x=\"239.257812\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "     <use x=\"302.880859\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "     <use x=\"334.667969\" xlink:href=\"#DejaVuSans-56\"/>\r\n",
       "     <use x=\"398.291016\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "     <use x=\"461.914062\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "     <use x=\"525.537109\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "     <use x=\"589.160156\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "     <use x=\"652.783203\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "     <use x=\"716.40625\" xlink:href=\"#DejaVuSans-57\"/>\r\n",
       "     <use x=\"780.029297\" xlink:href=\"#DejaVuSans-55\"/>\r\n",
       "     <use x=\"843.652344\" xlink:href=\"#DejaVuSans-54\"/>\r\n",
       "     <use x=\"907.275391\" xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "     <use x=\"970.898438\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "     <use x=\"1034.521484\" xlink:href=\"#DejaVuSans-56\"/>\r\n",
       "     <use x=\"1098.144531\" xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "     <use x=\"1161.767578\" xlink:href=\"#DejaVuSans-52\"/>\r\n",
       "     <use x=\"1225.390625\" xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "     <use x=\"1289.013672\" xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "  </g>\r\n",
       " </g>\r\n",
       " <defs>\r\n",
       "  <clipPath id=\"p7d2a54dc52\">\r\n",
       "   <rect height=\"135.9\" width=\"173.65\" x=\"33.2875\" y=\"10.729576\"/>\r\n",
       "  </clipPath>\r\n",
       " </defs>\r\n",
       "</svg>\r\n"
      ],
      "text/plain": [
       "<Figure size 252x180 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.imshow(img)\n",
    "for i in output[0].numpy():\n",
    "    if i[0] == -1:\n",
    "        continue\n",
    "    label = ('dog=', 'cat=')[int(i[0])] + str(i[1])\n",
    "    show_bboxes(fig.axes, tf.multiply(i[2:], bbox_scale), label)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "dG5PCEpDeJOb"
   },
   "source": [
    "实践中，我们可以在执行非极大值抑制前将置信度较低的预测边界框移除，从而减小非极大值抑制的计算量。我们还可以筛选非极大值抑制的输出，例如，只保留其中置信度较高的结果作为最终输出。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "P8myYD4heLRm"
   },
   "source": [
    "## 小结"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "qwrXZBRYeMxN"
   },
   "source": [
    "* 以每个像素为中心，生成多个大小和宽高比不同的锚框。\n",
    "* 交并比是两个边界框相交面积与相并面积之比。\n",
    "* 在训练集中，为每个锚框标注两类标签：一是锚框所含目标的类别；二是真实边界框相对锚框的偏移量。\n",
    "* 预测时，可以使用非极大值抑制来移除相似的预测边界框，从而令结果简洁。"
   ]
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "collapsed_sections": [],
   "name": "“9.4. 锚框.ipynb”的副本",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
